diff --git a/scripts/template_bash.sh b/scripts/template_bash.sh new file mode 100644 index 0000000..67e483c --- /dev/null +++ b/scripts/template_bash.sh @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + +set -Eeuo pipefail + +cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 + +trap cleanup SIGINT SIGTERM ERR EXIT + +usage() { + cat <&2 -e "${1-}" +} + +die() { + local msg=$1 + local code=${2-1} # default exit status 1 + msg "$msg" + exit "$code" +} + +parse_params() { + # default values of variables set from params + flag=0 + param='' + + while :; do + case "${1-}" in + -h | --help) + usage + ;; + -v | --verbose) + set -x + ;; + --no-color) + NO_COLOR=1 + ;; + -f | --flag) # example flag + flag=1 + ;; + -p | --param) # example named parameter + param="${2-}" + shift + ;; + -?*) + die "Unknown option: $1" + ;; + *) + break + ;; + esac + shift + done + + args=("$@") + + # check required params and arguments + [[ -z "${param-}" ]] && die "Missing required parameter: param" + [[ ${#args[@]} -eq 0 ]] && die "Missing script arguments" + + return 0 +} + +parse_params "$@" +setup_colors + +# script logic here + +msg "${RED}Read parameters:${NOCOLOR}" +msg "- flag: ${flag}" +msg "- param: ${param}" +msg "- arguments: ${args[*]-}"