Fixes #1 : Long arguments now display in cmdarg_usage()

This commit is contained in:
2014-01-27 11:22:14 -05:00
parent 9b5e247cda
commit d7e111c6d6
2 changed files with 45 additions and 9 deletions

View File

@@ -107,16 +107,16 @@ function cmdarg_describe
fi
case ${CMDARG_TYPES[$longopt]} in
$CMDARG_TYPE_STRING)
echo "-${opt} v : String. ${CMDARG_DESC[$opt]} $default"
echo "-${opt},--${longopt} v : String. ${CMDARG_DESC[$opt]} $default"
;;
$CMDARG_TYPE_BOOLEAN)
echo "-${opt} : Boolean. ${CMDARG_DESC[$opt]} $default"
echo "-${opt},--${longopt} : Boolean. ${CMDARG_DESC[$opt]} $default"
;;
$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)
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
@@ -253,15 +253,17 @@ function cmdarg_parse
exit 1
fi
if [[ "$opt" == "h" ]] || [[ "$longopt" == "help" ]]; then
cmdarg_usage
exit 1
fi
if [[ ${CMDARG_FLAGS[$opt]} -eq $CMDARG_FLAG_WITHARG ]]; then
optarg=$1
shift
fi
if [ "$opt" == "h" ]; then
cmdarg_usage
exit 1
elif [ ${CMDARG["${opt}"]+abc} ]; then
if [ ${CMDARG["${opt}"]+abc} ]; then
cmdarg_set_opt "${CMDARG[$opt]}" "$optarg"
else
echo "Unknown argument or invalid value : -${opt} | --${longopt}" >&2

View File

@@ -28,4 +28,38 @@ function shunittest_longopt_shortopts_still_work
[[ "${cmdarg_cfg['long-required-opt']}" == "hooha" ]] || return 1
[[ "${cmdarg_cfg['long-boolean-opt']}" == "true" ]] || 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)
}