lib/getoptions_abbr.sh
# shellcheck shell=sh disable=SC2016,SC2154
# [getoptions_abbr] License: Creative Commons Zero v1.0 Universal
getoptions_abbr() {
abbr() {
_3 "case '$1' in"
_4 '"$1") OPTARG=; break ;;'
_4 '$1*) OPTARG="$OPTARG '"$1"'"'
_3 'esac'
}
args() {
abbr=1
shift
for i; do
case $i in
--) break ;;
[!-+]*) eval "${i%%:*}=\${i#*:}"
esac
done
[ "$abbr" ] || return 0
for i; do
case $i in
--) break ;;
--\{no-\}*) abbr "--${i#--\{no-\}}"; abbr "--no-${i#--\{no-\}}" ;;
--*) abbr "$i"
esac
done
}
setup() { :; }
for i in flag param option disp; do
eval "_$i()" '{ args "$@"; }'
done
msg() { :; }
_2 'set -- "${1%%\=*}" "${1#*\=}" "$@"'
[ "$_alt" ] && _2 'case $1 in -[!-]?*) set -- "-$@"; esac'
_2 'while [ ${#1} -gt 2 ]; do'
_3 'case $1 in (*[!a-zA-Z0-9_-]*) break; esac'
"$@"
_3 'break'
_2 'done'
_2 'case ${OPTARG# } in'
_3 '*\ *)'
_4 'eval "set -- $OPTARG $1 $OPTARG"'
_4 'OPTIND=$((($#+1)/2)) OPTARG=$1; shift'
_4 'while [ $# -gt "$OPTIND" ]; do OPTARG="$OPTARG, $1"; shift; done'
_4 'set "Ambiguous option: $1 (could be $OPTARG)" ambiguous "$@"'
[ "$_error" ] && _4 "$_error" '"$@" >&2 || exit $?'
_4 'echo "$1" >&2'
_4 'exit 1 ;;'
_3 '?*)'
_4 '[ "$2" = "$3" ] || OPTARG="$OPTARG=$2"'
_4 "shift 3; eval 'set -- \"\${OPTARG# }\"' \${1+'\"\$@\"'}; OPTARG= ;;"
_3 '*) shift 2'
_2 'esac'
}