Skip to content

Commit 6ec4d06

Browse files
authored
Few bug fixes to handle stdin scripts better
1 parent 8e2668d commit 6ec4d06

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

generate

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ function _available-methods () {
4646

4747
# Dispatches CLI Methods
4848
function _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
6060
function _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

Comments
 (0)