#!/bin/bash # This script sets up a go workspace locally and generates the documents and manuals. source "$(dirname "${BASH_SOURCE}")/lib/init.sh" os::util::ensure::built_binary_exists 'gendocs' os::util::ensure::built_binary_exists 'genman' OUTPUT_DIR_REL=${1:-""} OUTPUT_DIR="${OS_ROOT}/${OUTPUT_DIR_REL}/docs/generated" MAN_OUTPUT_DIR="${OS_ROOT}/${OUTPUT_DIR_REL}/docs/man/man1" mkdir -p "${OUTPUT_DIR}" || echo $? > /dev/null mkdir -p "${MAN_OUTPUT_DIR}" || echo $? > /dev/null function generate_manual_pages() { local dest="$1" local cmdName="$2" local filestore=".files_generated_${cmdName}" local skipprefix="${3:-}" # We do this in a tmpdir in case the dest has other non-autogenned files # We don't want to include them in the list of gen'd files local tmpdir="${OS_ROOT}/_tmp/gen_man" mkdir -p "${tmpdir}" # generate the new files genman "${tmpdir}" "${cmdName}" # create the list of generated files ls "${tmpdir}" | LC_ALL=C sort > "${tmpdir}/${filestore}" # remove all old generated file from the destination while read file; do if [[ -e "${tmpdir}/${file}" && -n "${skipprefix}" ]]; then local original generated original=$(grep -v "^${skipprefix}" "${dest}/${file}") || : generated=$(grep -v "^${skipprefix}" "${tmpdir}/${file}") || : if [[ "${original}" == "${generated}" ]]; then # overwrite generated with original. mv "${dest}/${file}" "${tmpdir}/${file}" fi else rm "${dest}/${file}" || true fi done <"${dest}/${filestore}" # put the new generated file into the destination find "${tmpdir}" -exec rsync -pt {} "${dest}" \; >/dev/null #cleanup rm -rf "${tmpdir}" echo "Assets generated in ${dest}" } readonly -f generate_manual_pages function generate_documentation() { local dest="$1" local skipprefix="${1:-}" # We do this in a tmpdir in case the dest has other non-autogenned files # We don't want to include them in the list of gen'd files local tmpdir="${OS_ROOT}/_tmp/gen_doc" mkdir -p "${tmpdir}" # generate the new files gendocs "${tmpdir}" # create the list of generated files ls "${tmpdir}" | LC_ALL=C sort > "${tmpdir}/.files_generated" # remove all old generated file from the destination while read file; do if [[ -e "${tmpdir}/${file}" && -n "${skipprefix}" ]]; then local original generated original=$(grep -v "^${skipprefix}" "${dest}/${file}") || : generated=$(grep -v "^${skipprefix}" "${tmpdir}/${file}") || : if [[ "${original}" == "${generated}" ]]; then # overwrite generated with original. mv "${dest}/${file}" "${tmpdir}/${file}" fi else rm "${dest}/${file}" || true fi done <"${dest}/.files_generated" # put the new generated file into the destination find "${tmpdir}" -exec rsync -pt {} "${dest}" \; >/dev/null #cleanup rm -rf "${tmpdir}" echo "Assets generated in ${dest}" } readonly -f generate_documentation generate_documentation "${OUTPUT_DIR}" generate_manual_pages "${MAN_OUTPUT_DIR}" "oc" generate_manual_pages "${MAN_OUTPUT_DIR}" "openshift" generate_manual_pages "${MAN_OUTPUT_DIR}" "oadm"