diff options
Diffstat (limited to 'ariketa.sh')
-rw-r--r-- | ariketa.sh | 33 |
1 files changed, 28 insertions, 5 deletions
@@ -10,9 +10,8 @@ _ariketa.dir () { printf "%s" "$_ariketa_dir" } - _ariketa.help () { - >&2 printf "%s\n" "$(<USAGE)" + >&2 printf "%s\n" "$(<${ARIKETA_DIR:-.}${ARIKETA_DIR+/}USAGE)" return 1 } @@ -20,15 +19,38 @@ _sourced? () { [[ ${FUNCNAME[$(( ${#FUNCNAME[@]} - 1 ))]} == "source" ]] } +ARIKETA_DIR=$(_ariketa.dir) + _sourced? || { _ariketa.help exit $? } -ARIKETA_DIR=$(_ariketa.dir) +until [[ -z "$1" ]]; do + case "$1" in + -h|--help) + _ariketa.help + return $?;; + -a|--array) + # copy by indirection to set of discrete elements in named array + _ariketa_array_elements="${2:?Missing name parameter for '-a'}[@]" + _examples=( "${!_ariketa_array_elements}" ) + shift 2;; + *) + _ariketa_examples_file="${1}" + [[ -r "${_ariketa_examples_file}" ]] || { + _ariketa.help + return $? + } + shift;; + esac +done -# load examples array -source "${ARIKETA_DIR:?}/config/examples.sh" +# load examples array from file if array not passed / copied from args +[[ -z "${_ariketa_array_elements}" ]] && { + source "${_ariketa_examples_file:-${ARIKETA_DIR:?}/config/examples.sh}" +} +unset _ariketa_array_elements # if examples array has no content, bail with USAGE text (( ${#_examples[@]} )) || { @@ -42,6 +64,7 @@ source "${ARIKETA_DIR:?}/config/examples.sh" } # preserve multiline commands as such in history +HISTCONTROL=ignoredup shopt -s lithist # load presentation prompt |