mirror of
https://github.com/octoleo/hosts.git
synced 2025-01-01 05:31:49 +00:00
Remove unused option normalization.
This program only really accepts one short argument, `-h`, so this extra complexity isn't necessary.
This commit is contained in:
parent
79a5aa95fc
commit
dfcb37b3b6
81
hosts
81
hosts
@ -128,87 +128,6 @@ die() {
|
||||
# Get raw options for any commands that expect them.
|
||||
_RAW_OPTIONS="${*:-}"
|
||||
|
||||
# Steps:
|
||||
#
|
||||
# 1. set expected short options in `optstring` at beginning of the "Normalize
|
||||
# Options" section,
|
||||
# 2. parse options in while loop in the "Parse Options" section.
|
||||
|
||||
# Normalize Options ###########################################################
|
||||
|
||||
# Source:
|
||||
# https://github.com/e36freak/templates/blob/master/options
|
||||
|
||||
# The first loop, even though it uses 'optstring', will NOT check if an
|
||||
# option that takes a required argument has the argument provided. That must
|
||||
# be done within the second loop and case statement, yourself. Its purpose
|
||||
# is solely to determine that -oARG is split into -o ARG, and not -o -A -R -G.
|
||||
|
||||
# Set short options -----------------------------------------------------------
|
||||
|
||||
# option string, for short options.
|
||||
#
|
||||
# Very much like getopts, expected short options should be appended to the
|
||||
# string here. Any option followed by a ':' takes a required argument.
|
||||
#
|
||||
# In this example, `-x` and `-h` are regular short options, while `o` is
|
||||
# assumed to have an argument and will be split if joined with the string,
|
||||
# meaning `-oARG` would be split to `-o ARG`.
|
||||
optstring=h
|
||||
|
||||
# Normalize -------------------------------------------------------------------
|
||||
|
||||
# iterate over options, breaking -ab into -a -b and --foo=bar into --foo bar
|
||||
# also turns -- into --endopts to avoid issues with things like '-o-', the '-'
|
||||
# should not indicate the end of options, but be an invalid option (or the
|
||||
# argument to the option, such as wget -qO-)
|
||||
unset options
|
||||
# while the number of arguments is greater than 0
|
||||
while ((${#}))
|
||||
do
|
||||
case ${1} in
|
||||
# if option is of type -ab
|
||||
-[!-]?*)
|
||||
# loop over each character starting with the second
|
||||
for ((i=1; i<${#1}; i++))
|
||||
do
|
||||
# extract 1 character from position 'i'
|
||||
c=${1:i:1}
|
||||
# add current char to options
|
||||
options+=("-${c}")
|
||||
|
||||
# if option takes a required argument, and it's not the last char
|
||||
# make the rest of the string its argument
|
||||
if [[ ${optstring} = *"${c}:"* && ${1:i+1} ]]
|
||||
then
|
||||
options+=("${1:i+1}")
|
||||
break
|
||||
fi
|
||||
done
|
||||
;;
|
||||
# if option is of type --foo=bar, split on first '='
|
||||
--?*=*)
|
||||
options+=("${1%%=*}" "${1#*=}")
|
||||
;;
|
||||
# end of options, stop breaking them up
|
||||
--)
|
||||
options+=(--endopts)
|
||||
shift
|
||||
options+=("${@}")
|
||||
break
|
||||
;;
|
||||
# otherwise, nothing special
|
||||
*)
|
||||
options+=("${1}")
|
||||
;;
|
||||
esac
|
||||
|
||||
shift
|
||||
done
|
||||
# set new positional parameters to altered options. Set default to blank.
|
||||
set -- "${options[@]:-}"
|
||||
unset options
|
||||
|
||||
# Parse Options ###############################################################
|
||||
|
||||
# Initialize $_COMMAND_ARGV array
|
||||
|
Loading…
Reference in New Issue
Block a user