49 lines
1.4 KiB
Bash
49 lines
1.4 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# Metadata and help utilities for scripts
|
||
|
|
# Provides simple helpers to print script usage and header information.
|
||
|
|
|
||
|
|
# Print a standardized usage/help message using optional variables:
|
||
|
|
# SCRIPT_NAME, SCRIPT_DESC, SCRIPT_USAGE, SCRIPT_OPTIONS, SCRIPT_ENVVARS, SCRIPT_REQUIREMENTS, SCRIPT_EXAMPLE
|
||
|
|
script_usage() {
|
||
|
|
local name="${SCRIPT_NAME:-${0##*/}}"
|
||
|
|
echo "${name}"
|
||
|
|
[ -n "${SCRIPT_DESC:-}" ] && echo "Description: ${SCRIPT_DESC}"
|
||
|
|
if [ -n "${SCRIPT_USAGE:-}" ]; then
|
||
|
|
echo "Usage: ${SCRIPT_USAGE}"
|
||
|
|
else
|
||
|
|
echo "Usage: ${name} [options]"
|
||
|
|
fi
|
||
|
|
if [ -n "${SCRIPT_OPTIONS:-}" ]; then
|
||
|
|
echo
|
||
|
|
echo "Options:"
|
||
|
|
# shellcheck disable=SC2001
|
||
|
|
echo "${SCRIPT_OPTIONS}" | sed 's/^/ /'
|
||
|
|
fi
|
||
|
|
if [ -n "${SCRIPT_ENVVARS:-}" ]; then
|
||
|
|
echo
|
||
|
|
echo "Environment:"
|
||
|
|
# shellcheck disable=SC2001
|
||
|
|
echo "${SCRIPT_ENVVARS}" | sed 's/^/ /'
|
||
|
|
fi
|
||
|
|
if [ -n "${SCRIPT_REQUIREMENTS:-}" ]; then
|
||
|
|
echo
|
||
|
|
echo "Requires: ${SCRIPT_REQUIREMENTS}"
|
||
|
|
fi
|
||
|
|
if [ -n "${SCRIPT_EXAMPLE:-}" ]; then
|
||
|
|
echo
|
||
|
|
echo "Example:"
|
||
|
|
# shellcheck disable=SC2001
|
||
|
|
echo "${SCRIPT_EXAMPLE}" | sed 's/^/ /'
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
# Handle -h/--help; call after sourcing init and setting metadata vars
|
||
|
|
handle_help() {
|
||
|
|
case "${1:-}" in
|
||
|
|
-h|--help)
|
||
|
|
script_usage
|
||
|
|
exit 0
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
}
|