diff options
Diffstat (limited to 'shflags')
-rw-r--r-- | shflags | 70 |
1 files changed, 36 insertions, 34 deletions
@@ -81,6 +81,11 @@ # # Notes: # - lists of strings are space separated, and a null value is the '~' char. +# +# $() are not fully portable (POSIX != portable). +# shellcheck disable=SC2006 +# [ p -a q ] are well defined enough (vs [ p ] && [ q ]). +# shellcheck disable=SC2166 # Return if FLAGS already loaded. [ -n "${FLAGS_VERSION:-}" ] && return 0 @@ -149,7 +154,6 @@ __FLAGS_RESERVED_LIST="${__FLAGS_RESERVED_LIST} VERSION " # getopt version. __FLAGS_GETOPT_VERS_STD=0 __FLAGS_GETOPT_VERS_ENH=1 -__FLAGS_GETOPT_VERS_BSD=2 ${FLAGS_GETOPT_CMD} >/dev/null 2>&1 case $? in @@ -199,12 +203,12 @@ for __flags_const in ${__flags_constants}; do esac # Set flag readonly. if [ -z "${ZSH_VERSION:-}" ]; then - readonly ${__flags_const} + readonly "${__flags_const}" continue fi case ${ZSH_VERSION} in - [123].*) readonly ${__flags_const} ;; - *) readonly -g ${__flags_const} ;; # Declare readonly constants globally. + [123].*) readonly "${__flags_const}" ;; + *) readonly -g "${__flags_const}" ;; # Declare readonly constants globally. esac done unset __flags_const __flags_constants @@ -230,23 +234,23 @@ __flags_opts='' # Temporary storage for parsed getopt flags. # Logging functions. _flags_debug() { [ ${__flags_level} -le ${FLAGS_LEVEL_DEBUG} ] || return - echo "flags:DEBUG $@" >&2 + echo "flags:DEBUG $*" >&2 } _flags_info() { [ ${__flags_level} -le ${FLAGS_LEVEL_INFO} ] || return - echo "flags:INFO $@" >&2 + echo "flags:INFO $*" >&2 } _flags_warn() { [ ${__flags_level} -le ${FLAGS_LEVEL_WARN} ] || return - echo "flags:WARN $@" >&2 + echo "flags:WARN $*" >&2 } _flags_error() { [ ${__flags_level} -le ${FLAGS_LEVEL_ERROR} ] || return - echo "flags:ERROR $@" >&2 + echo "flags:ERROR $*" >&2 } _flags_fatal() { [ ${__flags_level} -le ${FLAGS_LEVEL_FATAL} ] || return - echo "flags:FATAL $@" >&2 + echo "flags:FATAL $*" >&2 exit ${FLAGS_ERROR} } @@ -262,8 +266,8 @@ flags_loggingLevel() { echo ${__flags_level}; } flags_setLoggingLevel() { [ $# -ne 1 ] && _flags_fatal "flags_setLevel(): logging level missing" _flags_level_=$1 - [ ${_flags_level_} -ge ${FLAGS_LEVEL_DEBUG} \ - -a ${_flags_level_} -le ${FLAGS_LEVEL_FATAL} ] \ + [ "${_flags_level_}" -ge "${FLAGS_LEVEL_DEBUG}" \ + -a "${_flags_level_}" -le "${FLAGS_LEVEL_FATAL}" ] \ || _flags_fatal "Invalid logging level '${_flags_level_}' specified." __flags_level=$1 unset _flags_level_ @@ -307,10 +311,10 @@ _flags_define() "short:${_flags_short_}" _flags_return_=${FLAGS_TRUE} - _flags_usName_=`_flags_underscoreName ${_flags_name_}` + _flags_usName_="`_flags_underscoreName "${_flags_name_}"`" # check whether the flag name is reserved - _flags_itemInList ${_flags_usName_} "${__FLAGS_RESERVED_LIST}" + _flags_itemInList "${_flags_usName_}" "${__FLAGS_RESERVED_LIST}" if [ $? -eq ${FLAGS_TRUE} ]; then flags_error="flag name (${_flags_name_}) is reserved" _flags_return_=${FLAGS_ERROR} @@ -327,7 +331,7 @@ _flags_define() # check for existing long name definition if [ ${_flags_return_} -eq ${FLAGS_TRUE} ]; then - if _flags_itemInList ${_flags_usName_} ${__flags_definedNames}; then + if _flags_itemInList "${_flags_usName_}" "${__flags_definedNames}"; then flags_error="definition for ([no]${_flags_name_}) already exists" _flags_warn "${flags_error}" _flags_return_=${FLAGS_FALSE} @@ -338,7 +342,7 @@ _flags_define() if [ ${_flags_return_} -eq ${FLAGS_TRUE} \ -a "${_flags_short_}" != "${__FLAGS_NULL}" ] then - if _flags_itemInList "${_flags_short_}" ${__flags_shortNames}; then + if _flags_itemInList "${_flags_short_}" "${__flags_shortNames}"; then flags_error="flag short name (${_flags_short_}) already defined" _flags_warn "${flags_error}" _flags_return_=${FLAGS_FALSE} @@ -401,12 +405,12 @@ _flags_define() # append flag names to name lists __flags_shortNames="${__flags_shortNames}${_flags_short_} " __flags_longNames="${__flags_longNames}${_flags_name_} " - [ ${_flags_type_} -eq ${__FLAGS_TYPE_BOOLEAN} ] && \ + [ "${_flags_type_}" -eq "${__FLAGS_TYPE_BOOLEAN}" ] && \ __flags_boolNames="${__flags_boolNames}no${_flags_name_} " # append flag names to defined names for later validation checks __flags_definedNames="${__flags_definedNames}${_flags_usName_} " - [ ${_flags_type_} -eq ${__FLAGS_TYPE_BOOLEAN} ] && \ + [ "${_flags_type_}" -eq "${__FLAGS_TYPE_BOOLEAN}" ] && \ __flags_definedNames="${__flags_definedNames}no${_flags_usName_} " fi @@ -425,7 +429,7 @@ _flags_define() # string: underscored name _flags_underscoreName() { - echo $1 |tr '-' '_' + echo "$1" |tr '-' '_' } # Return valid getopt options using currently defined list of long options. @@ -446,17 +450,17 @@ _flags_genOptStr() _flags_opts_='' for _flags_name_ in ${__flags_longNames}; do - _flags_usName_=`_flags_underscoreName ${_flags_name_}` - _flags_type_=`_flags_getFlagInfo ${_flags_usName_} ${__FLAGS_INFO_TYPE}` + _flags_usName_="`_flags_underscoreName "${_flags_name_}"`" + _flags_type_="`_flags_getFlagInfo "${_flags_usName_}" "${__FLAGS_INFO_TYPE}"`" [ $? -eq ${FLAGS_TRUE} ] || _flags_fatal 'call to _flags_type_ failed' case ${_flags_optStrType_} in ${__FLAGS_OPTSTR_SHORT}) - _flags_shortName_=`_flags_getFlagInfo \ - ${_flags_usName_} ${__FLAGS_INFO_SHORT}` + _flags_shortName_="`_flags_getFlagInfo \ + "${_flags_usName_}" "${__FLAGS_INFO_SHORT}"`" if [ "${_flags_shortName_}" != "${__FLAGS_NULL}" ]; then _flags_opts_="${_flags_opts_}${_flags_shortName_}" # getopt needs a trailing ':' to indicate a required argument - [ ${_flags_type_} -ne ${__FLAGS_TYPE_BOOLEAN} ] && \ + [ "${_flags_type_}" -ne "${__FLAGS_TYPE_BOOLEAN}" ] && \ _flags_opts_="${_flags_opts_}:" fi ;; @@ -464,7 +468,7 @@ _flags_genOptStr() ${__FLAGS_OPTSTR_LONG}) _flags_opts_="${_flags_opts_:+${_flags_opts_},}${_flags_name_}" # getopt needs a trailing ':' to indicate a required argument - [ ${_flags_type_} -ne ${__FLAGS_TYPE_BOOLEAN} ] && \ + [ "${_flags_type_}" -ne "${__FLAGS_TYPE_BOOLEAN}" ] && \ _flags_opts_="${_flags_opts_}:" ;; esac @@ -485,9 +489,8 @@ _flags_genOptStr() # string: value of dereferenced flag variable # Returns: # integer: one of FLAGS_{TRUE|FALSE|ERROR} -_flags_getFlagInfo() -{ - # note: adding gFI to variable names to prevent naming conflicts with calling +_flags_getFlagInfo() { + # Note: adding gFI to variable names to prevent naming conflicts with calling # functions _flags_gFI_usName_=$1 _flags_gFI_info_=$2 @@ -504,9 +507,9 @@ _flags_getFlagInfo() -a "${_flags_infoValue_}" = 'ยง' ] && _flags_infoValue_='' flags_return=${FLAGS_TRUE} else - # see if the _flags_gFI_usName_ variable is a string as strings can be + # See if the _flags_gFI_usName_ variable is a string as strings can be # empty... - # note: the DRY principle would say to have this function call itself for + # Note: the DRY principle would say to have this function call itself for # the next three lines, but doing so results in an infinite loop as an # invalid _flags_name_ will also not have the associated _type variable. # Because it doesn't (it will evaluate to an empty string) the logic will @@ -1001,13 +1004,12 @@ DEFINE_string() { _flags_define ${__FLAGS_TYPE_STRING} "$@"; } # unnamed: list: command-line flags to parse # Returns: # integer: success of operation, or error -FLAGS() -{ - # define a standard 'help' flag if one isn't already defined +FLAGS() { + # Define a standard 'help' flag if one isn't already defined. [ -z "${__flags_help_type:-}" ] && \ DEFINE_boolean 'help' false 'show this help' 'h' - # parse options + # Parse options. if [ $# -gt 0 ]; then if [ ${__FLAGS_GETOPT_VERS} -ne ${__FLAGS_GETOPT_VERS_ENH} ]; then _flags_getoptStandard "$@" @@ -1016,7 +1018,7 @@ FLAGS() fi flags_return=$? else - # nothing passed; won't bother running getopt + # Nothing passed; won't bother running getopt. __flags_opts='--' flags_return=${FLAGS_TRUE} fi |