new argument parser
This commit is contained in:
parent
fcb4c6bdb0
commit
909fc31f46
38
sup
38
sup
|
@ -93,26 +93,36 @@ sup.mktemp() {
|
||||||
}
|
}
|
||||||
|
|
||||||
sup.getopt() {
|
sup.getopt() {
|
||||||
local keys
|
while (( $# )); do
|
||||||
|
unset -v arg opt c keys
|
||||||
|
|
||||||
for i in "$@"; do
|
case "$1" in
|
||||||
case "$i" in
|
(--) printf '%s\n' '--'; break;;
|
||||||
--*) echo "$i";;
|
|
||||||
|
|
||||||
-*)
|
(--*)
|
||||||
keys=( $(echo "${i##*-}" | fold -w1) )
|
IFS='=' read arg opt <<< "$1"
|
||||||
|
printf '%s\n' "$arg"
|
||||||
|
|
||||||
if [[ "${#keys[@]}" -gt 1 ]]; then
|
[[ "$opt" ]] && {
|
||||||
for k in "${keys[@]}"; do
|
printf '%s\n' "$opt"
|
||||||
echo "-${k}"
|
}
|
||||||
done
|
|
||||||
else
|
|
||||||
echo "$i"
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*) echo "$i";;
|
(-*)
|
||||||
|
while read -n1 c
|
||||||
|
do
|
||||||
|
case "$c" in
|
||||||
|
-|'') :;;
|
||||||
|
*) keys+=( "-$c" );;
|
||||||
|
esac
|
||||||
|
done <<< "$1"
|
||||||
|
|
||||||
|
printf '%s\n' "${keys[@]}"
|
||||||
|
;;
|
||||||
|
|
||||||
|
(*) printf '%s\n' "$1";;
|
||||||
esac
|
esac
|
||||||
|
shift
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user