Use getopt for argument parsing

This commit is contained in:
deadcxap
2025-08-25 11:01:21 +03:00
parent 1768a58344
commit 860babcedc
+28 -15
View File
@@ -103,22 +103,35 @@ ROLE=""
NETBIRD_KEY="" NETBIRD_KEY=""
NETBIRD_IP="" NETBIRD_IP=""
NETBIRD_PORT="" NETBIRD_PORT=""
parse_args() {
local opts
if ! opts=$(getopt \
-o u:k:s:m:v:r:n:i:p:h \
--long user:,sshkey:,ssh-ip:,monitor-ip:,vector:,role:,netbird-key:,netbird-ip:,netbird-port:,help \
-n "$0" -- "$@"); then
usage
exit 1
fi
eval set -- "$opts"
while true; do
case "$1" in
-u|--user) USERNAME="$2"; shift 2 ;;
-k|--sshkey) SSH_KEY="$2"; shift 2 ;;
-s|--ssh-ip) SSH_ALLOWED_IP="$2"; shift 2 ;;
-m|--monitor-ip) MONITOR_IP="$2"; shift 2 ;;
-v|--vector) VECTOR_ENDPOINT="$2"; shift 2 ;;
-r|--role) ROLE="$2"; shift 2 ;;
-n|--netbird-key) NETBIRD_KEY="$2"; shift 2 ;;
-i|--netbird-ip) NETBIRD_IP="$2"; shift 2 ;;
-p|--netbird-port) NETBIRD_PORT="$2"; shift 2 ;;
-h|--help) usage; exit 0 ;;
--) shift; break ;;
*) log "Unknown parameter: $1"; usage; exit 1 ;;
esac
done
}
while [[ $# -gt 0 ]]; do parse_args "$@"
case "$1" in
-u|--user) USERNAME="$2"; shift 2;;
-k|--sshkey) SSH_KEY="$2"; shift 2;;
-s|--ssh-ip) SSH_ALLOWED_IP="$2"; shift 2;;
-m|--monitor-ip) MONITOR_IP="$2"; shift 2;;
-v|--vector) VECTOR_ENDPOINT="$2"; shift 2;;
-r|--role) ROLE="$2"; shift 2;;
-n|--netbird-key) NETBIRD_KEY="$2"; shift 2;;
-i|--netbird-ip) NETBIRD_IP="$2"; shift 2;;
-p|--netbird-port) NETBIRD_PORT="$2"; shift 2;;
-h|--help) usage; exit 0;;
*) log "Unknown parameter: $1"; usage; exit 1;;
esac
done
if [[ -z "$USERNAME" || -z "$SSH_KEY" ]]; then if [[ -z "$USERNAME" || -z "$SSH_KEY" ]]; then
usage usage