Skip to content

Commit 0ac1e1d

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

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

template.sh

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

5959
# Dispatches CLI Methods
6060
function _handle () {
61-
METHOD=$(_available-methods | grep -Eoh "^${1}\$")
61+
METHOD=$(_available-methods 2>/dev/null | grep -Eoh "^${1}\$")
6262
if [ "x${METHOD}" != "x" ]; then ${METHOD} ${@:2}; exit 0
6363
else
6464
# Call a Catch-All method
@@ -70,7 +70,7 @@ function _handle () {
7070

7171
# Generate Autocomplete Script
7272
function _generate-autocomplete () {
73-
SCRIPT="$(echo ${SCRIPT_NAME} | sed -E 's/[ ]+/-/')"
73+
SCRIPT="$(printf "%s" ${SCRIPT_NAME} | sed -E 's/[ ]+/-/')"
7474
ACS="function __ac-${SCRIPT}-prompt() {"
7575
ACS+="local cur"
7676
ACS+="COMPREPLY=()"
@@ -116,16 +116,16 @@ ARGS=(); EXPORTS=(); while test $# -gt 0; do
116116
generate-autocomplete) _generate-autocomplete ;;
117117
*) # Where the Magic Happens!
118118
if [ ${#SCRIPT_OPTS[@]} -gt 0 ]; then for OPT in ${SCRIPT_OPTS[@]}; do SUBOPTS=("${1}"); LAST_SUBOPT="${1}"
119-
if [[ "${1}" =~ ^-[^-]{2,} ]]; then SUBOPTS=$(echo "${1}"|sed 's/-//'|grep -o .); LAST_SUBOPT="-${1: -1}"; fi
120-
for SUBOPT in ${SUBOPTS[@]}; do SUBOPT="$(echo ${SUBOPT} | sed -E 's/^([^-]+)/-\1/')"
121-
OPT_MATCH=$(echo ${OPT} | grep -Eoh "^.*?:" | sed 's/://')
122-
OPT_KEY=$(echo ${OPT} | grep -Eoh ":.*?$" | sed 's/://')
119+
if [[ "${1}" =~ ^-[^-]{2,} ]]; then SUBOPTS=$(printf "%s" "${1}"|sed 's/-//'|grep -o .); LAST_SUBOPT="-${1: -1}"; fi
120+
for SUBOPT in ${SUBOPTS[@]}; do SUBOPT="$(printf "%s" ${SUBOPT} | sed -E 's/^([^-]+)/-\1/')"
121+
OPT_MATCH=$(printf "%s" ${OPT} | grep -Eoh "^.*?:" | sed 's/://')
122+
OPT_KEY=$(printf "%s" ${OPT} | grep -Eoh ":.*?$" | sed 's/://')
123123
OPT_VARNAME="OPTS_${OPT_KEY}"
124124
if [ -z "${OPT_VARNAME}" ]; then echo "Invalid Option Definition, missing VARNAME: ${OPT}" 1>&2; exit 1; fi
125125
if [[ "${SUBOPT}" =~ ^${OPT_MATCH}$ ]]; then
126126
OPT_VAL="${OPT_VARNAME}"; OPT_MATCHED=$((OPT_MATCHED+1))
127127
if [[ "${SUBOPT}" =~ ^${LAST_SUBOPT}$ ]]; then
128-
if [ -n "${2}" -a $# -gt 2 ] && [[ ! "${2}" =~ ^-+ ]]; then OPT_VAL="${2}"; shift; fi; fi
128+
if [ -n "${2}" -a $# -ge 2 ] && [[ ! "${2}" =~ ^-+ ]]; then OPT_VAL="${2}"; shift; fi; fi
129129
if [ -n "${!OPT_VARNAME}" ]; then OPT_VAL="${!OPT_VARNAME};${OPT_VAL}"; fi
130130
declare "${OPT_VARNAME}=${OPT_VAL}"
131131
EXPORTS+=("${OPT_VARNAME}")

0 commit comments

Comments
 (0)