Fixes #1 : Long arguments now display in cmdarg_usage()
This commit is contained in:
18
cmdarg.sh
18
cmdarg.sh
@@ -107,16 +107,16 @@ function cmdarg_describe
|
|||||||
fi
|
fi
|
||||||
case ${CMDARG_TYPES[$longopt]} in
|
case ${CMDARG_TYPES[$longopt]} in
|
||||||
$CMDARG_TYPE_STRING)
|
$CMDARG_TYPE_STRING)
|
||||||
echo "-${opt} v : String. ${CMDARG_DESC[$opt]} $default"
|
echo "-${opt},--${longopt} v : String. ${CMDARG_DESC[$opt]} $default"
|
||||||
;;
|
;;
|
||||||
$CMDARG_TYPE_BOOLEAN)
|
$CMDARG_TYPE_BOOLEAN)
|
||||||
echo "-${opt} : Boolean. ${CMDARG_DESC[$opt]} $default"
|
echo "-${opt},--${longopt} : Boolean. ${CMDARG_DESC[$opt]} $default"
|
||||||
;;
|
;;
|
||||||
$CMDARG_TYPE_ARRAY)
|
$CMDARG_TYPE_ARRAY)
|
||||||
echo "-${opt} v[, ...] : Array. ${CMDARG_DESC[$opt]}. Pass this argument multiple times for multiple values. $default"
|
echo "-${opt},--${longopt} v[, ...] : Array. ${CMDARG_DESC[$opt]}. Pass this argument multiple times for multiple values. $default"
|
||||||
;;
|
;;
|
||||||
$CMDARG_TYPE_HASH)
|
$CMDARG_TYPE_HASH)
|
||||||
echo "-${opt} k=v{, ..} : Hash. ${CMDARG_DESC[$opt]}. Pass this argument multiple times for multiple key/value pairs. $default"
|
echo "-${opt},--${longopt} k=v{, ..} : Hash. ${CMDARG_DESC[$opt]}. Pass this argument multiple times for multiple key/value pairs. $default"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unable to return string description for ${key}; unknown type ${CMDARG_TYPES[$opt]}" >&2
|
echo "Unable to return string description for ${key}; unknown type ${CMDARG_TYPES[$opt]}" >&2
|
||||||
@@ -253,15 +253,17 @@ function cmdarg_parse
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ "$opt" == "h" ]] || [[ "$longopt" == "help" ]]; then
|
||||||
|
cmdarg_usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ ${CMDARG_FLAGS[$opt]} -eq $CMDARG_FLAG_WITHARG ]]; then
|
if [[ ${CMDARG_FLAGS[$opt]} -eq $CMDARG_FLAG_WITHARG ]]; then
|
||||||
optarg=$1
|
optarg=$1
|
||||||
shift
|
shift
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$opt" == "h" ]; then
|
if [ ${CMDARG["${opt}"]+abc} ]; then
|
||||||
cmdarg_usage
|
|
||||||
exit 1
|
|
||||||
elif [ ${CMDARG["${opt}"]+abc} ]; then
|
|
||||||
cmdarg_set_opt "${CMDARG[$opt]}" "$optarg"
|
cmdarg_set_opt "${CMDARG[$opt]}" "$optarg"
|
||||||
else
|
else
|
||||||
echo "Unknown argument or invalid value : -${opt} | --${longopt}" >&2
|
echo "Unknown argument or invalid value : -${opt} | --${longopt}" >&2
|
||||||
|
|||||||
@@ -29,3 +29,37 @@ function shunittest_longopt_shortopts_still_work
|
|||||||
[[ "${cmdarg_cfg['long-boolean-opt']}" == "true" ]] || return 1
|
[[ "${cmdarg_cfg['long-boolean-opt']}" == "true" ]] || return 1
|
||||||
[[ "${cmdarg_cfg['long-required-default-opt']}" == "(nil)" ]] || return 1
|
[[ "${cmdarg_cfg['long-required-default-opt']}" == "(nil)" ]] || return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function shunittest_longopt_usage_messages_string
|
||||||
|
{
|
||||||
|
cmdarg_purge
|
||||||
|
cmdarg 'l:' 'long-required-opt' 'Some long opt that requires a value'
|
||||||
|
output=$(cmdarg_parse -h 2>&1 | grep -- '-l,--long-required-opt v : String. Some long opt that requires a value')
|
||||||
|
[[ "$output" != "" ]] || return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function shunittest_longopt_usage_messages_boolean
|
||||||
|
{
|
||||||
|
cmdarg_purge
|
||||||
|
cmdarg 'l' 'long-boolean-opt' 'Some long boolean opt'
|
||||||
|
output=$(cmdarg_parse -h 2>&1 | grep -- '-l,--long-boolean-opt : Boolean. Some long boolean opt')
|
||||||
|
[[ "$output" != "" ]] || return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function shunittest_longopt_usage_messages_array
|
||||||
|
{
|
||||||
|
cmdarg_purge
|
||||||
|
declare -a long_array_opt
|
||||||
|
cmdarg 'l:[]' 'long_array_opt' 'Some long array opt'
|
||||||
|
output=$(cmdarg_parse -h 2>&1 | grep -- '-l,--long_array_opt v')
|
||||||
|
[[ "$output" != "" ]] || return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function shunittest_longopt_usage_messages_hash
|
||||||
|
{
|
||||||
|
cmdarg_purge
|
||||||
|
declare -A long_hash_opt
|
||||||
|
cmdarg 'l:{}' 'long_hash_opt' 'Some long hash opt'
|
||||||
|
output=$(cmdarg_parse -h 2>&1 | grep -- '-l,--long_hash_opt k=v')
|
||||||
|
[[ "$output" != "" ]] || (cmdarg_parse ; return 1)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user