## Hooks function extension_metadata_ready__499_display_docs_generation_start_info() { display_alert "Generating hook documentation and sample extension" } function extension_metadata_ready__docs_markdown() { generate_markdown_docs_to_stdout >"${DEST}/"${LOG_SUBPATH}"/hooks.auto.docs.md" } function extension_metadata_ready__docs_sample_extension() { mkdir -p "${SRC}/userpatches/extensions" generate_sample_extension_to_stdout >"${SRC}/userpatches/extensions/sample-extension.sh" } ## Internal functions ### Common stuff function read_common_data() { export HOOK_POINT_CALLS_COUNT=$(wc -l <"${EXTENSION_MANAGER_TMP_DIR}/hook_point_calls.txt") export HOOK_POINT_CALLS_UNIQUE_COUNT=$(sort <"${EXTENSION_MANAGER_TMP_DIR}/hook_point_calls.txt" | uniq | wc -l) export HOOK_POINTS_WITH_MULTIPLE_CALLS="" # Read the hook_points (main, official names) from the hook point ordering file. export ALL_HOOK_POINT_CALLS=$(xargs echo -n <"${EXTENSION_MANAGER_TMP_DIR}/hook_point_calls.txt") } function loop_over_hook_points_and_call() { local callback="$1" HOOK_POINT_COUNTER=0 for one_hook_point in ${ALL_HOOK_POINT_CALLS}; do export HOOK_POINT_COUNTER=$((HOOK_POINT_COUNTER + 1)) export HOOK_POINT="${one_hook_point}" export MARKDOWN_HEAD="$(head -1 "${EXTENSION_MANAGER_TMP_DIR}/${one_hook_point}.orig.md")" export MARKDOWN_BODY="$(tail -n +2 "${EXTENSION_MANAGER_TMP_DIR}/${one_hook_point}.orig.md")" export COMPATIBILITY_NAMES="$(xargs echo -n <"${EXTENSION_MANAGER_TMP_DIR}/${one_hook_point}.compat")" ${callback} done } ## Markdown stuff function generate_markdown_docs_to_stdout() { read_common_data cat < ${MARKDOWN_HEAD} ${MARKDOWN_BODY} HOOK_DOCS [[ "${COMPATIBILITY_NAMES}" != "" ]] && { echo -e "\n\nAlso known as (for backwards compatibility only):" for old_name in ${COMPATIBILITY_NAMES}; do echo "- \`${old_name}\`" done } echo "" } ## Bash sample extension stuff generate_sample_extension_to_stdout() { read_common_data cat <