@@ -46,7 +46,7 @@ function _available-methods () {
4646
4747# Dispatches CLI Methods
4848function _handle () {
49- METHOD=$( _available-methods | grep -Eoh " ^${1} \$ " )
49+ METHOD=$( _available-methods 2> /dev/null | grep -Eoh " ^${1} \$ " )
5050 if [ " x${METHOD} " != " x" ]; then ${METHOD} ${@: 2} ; exit 0
5151 else
5252 # Call a Catch-All method
@@ -58,7 +58,7 @@ function _handle () {
5858
5959# Generate Autocomplete Script
6060function _generate-autocomplete () {
61- SCRIPT=" $( echo ${SCRIPT_NAME} | sed -E ' s/[ ]+/-/' ) "
61+ SCRIPT=" $( printf " %s " ${SCRIPT_NAME} | sed -E ' s/[ ]+/-/' ) "
6262 ACS=" function __ac-${SCRIPT} -prompt() {"
6363 ACS+=" local cur"
6464 ACS+=" COMPREPLY=()"
@@ -84,9 +84,9 @@ function _catchall () {
8484 if [ " ${OPTS_CATCHALL} " != " yes" -a " ${OPTS_CATCHALL} " != " no" ]; then OPTS_CATCHALL=" no" ; fi
8585
8686 # Replace tokens here to enable template customization
87- SCRIPT_TEMPLATE=$( printf " %s" " ${SCRIPT_TEMPLATE} " | sed ' s/<ProvidedScriptName>/' ${OPTS_NAME:- ScriptName} ' /g' )
88- SCRIPT_TEMPLATE=$( printf " %s" " ${SCRIPT_TEMPLATE} " | sed ' s/<ProvidedScriptVersion>/' ${OPTS_VERSION:- 1.0.0} ' /g' )
89- SCRIPT_TEMPLATE=$( printf " %s" " ${SCRIPT_TEMPLATE} " | sed ' s/<ProvidedCatchAll>/' ${OPTS_CATCHALL:- no} ' /g' )
87+ SCRIPT_TEMPLATE=$( printf " %s" " ${SCRIPT_TEMPLATE} " | sed ' s/<ProvidedScriptName>/' " ${OPTS_NAME:- ScriptName} " ' /g' )
88+ SCRIPT_TEMPLATE=$( printf " %s" " ${SCRIPT_TEMPLATE} " | sed ' s/<ProvidedScriptVersion>/' " ${OPTS_VERSION:- 1.0.0} " ' /g' )
89+ SCRIPT_TEMPLATE=$( printf " %s" " ${SCRIPT_TEMPLATE} " | sed ' s/<ProvidedCatchAll>/' " ${OPTS_CATCHALL:- no} " ' /g' )
9090
9191 # Output the Template
9292 printf " %s" " ${SCRIPT_TEMPLATE} "
@@ -112,16 +112,16 @@ ARGS=(); EXPORTS=(); while test $# -gt 0; do
112112 generate-autocomplete) _generate-autocomplete ;;
113113 * ) # Where the Magic Happens!
114114 if [ ${# SCRIPT_OPTS[@]} -gt 0 ]; then for OPT in ${SCRIPT_OPTS[@]} ; do SUBOPTS=(" ${1} " ); LAST_SUBOPT=" ${1} "
115- if [[ " ${1} " =~ ^-[^-]{2,} ]]; then SUBOPTS=$( echo " ${1} " | sed ' s/-//' | grep -o .) ; LAST_SUBOPT=" -${1: -1} " ; fi
116- for SUBOPT in ${SUBOPTS[@]} ; do SUBOPT=" $( echo ${SUBOPT} | sed -E ' s/^([^-]+)/-\1/' ) "
117- OPT_MATCH=$( echo ${OPT} | grep -Eoh " ^.*?:" | sed ' s/://' )
118- OPT_KEY=$( echo ${OPT} | grep -Eoh " :.*?$" | sed ' s/://' )
115+ if [[ " ${1} " =~ ^-[^-]{2,} ]]; then SUBOPTS=$( printf " %s " " ${1} " | sed ' s/-//' | grep -o .) ; LAST_SUBOPT=" -${1: -1} " ; fi
116+ for SUBOPT in ${SUBOPTS[@]} ; do SUBOPT=" $( printf " %s " ${SUBOPT} | sed -E ' s/^([^-]+)/-\1/' ) "
117+ OPT_MATCH=$( printf " %s " ${OPT} | grep -Eoh " ^.*?:" | sed ' s/://' )
118+ OPT_KEY=$( printf " %s " ${OPT} | grep -Eoh " :.*?$" | sed ' s/://' )
119119 OPT_VARNAME=" OPTS_${OPT_KEY} "
120120 if [ -z " ${OPT_VARNAME} " ]; then echo " Invalid Option Definition, missing VARNAME: ${OPT} " 1>&2 ; exit 1; fi
121121 if [[ " ${SUBOPT} " =~ ^${OPT_MATCH} $ ]]; then
122122 OPT_VAL=" ${OPT_VARNAME} " ; OPT_MATCHED=$(( OPT_MATCHED+ 1 ))
123123 if [[ " ${SUBOPT} " =~ ^${LAST_SUBOPT} $ ]]; then
124- if [ -n " ${2} " -a $# -gt 2 ] && [[ ! " ${2} " =~ ^-+ ]]; then OPT_VAL=" ${2} " ; shift ; fi ; fi
124+ if [ -n " ${2} " -a $# -ge 2 ] && [[ ! " ${2} " =~ ^-+ ]]; then OPT_VAL=" ${2} " ; shift ; fi ; fi
125125 if [ -n " ${! OPT_VARNAME} " ]; then OPT_VAL=" ${! OPT_VARNAME} ;${OPT_VAL} " ; fi
126126 declare " ${OPT_VARNAME} =${OPT_VAL} "
127127 EXPORTS+=(" ${OPT_VARNAME} " )
0 commit comments