improved args

This commit is contained in:
2026-03-25 01:36:48 +00:00
parent 9a637b7ca8
commit ce1eed3b8b
2 changed files with 41 additions and 11 deletions
+25 -9
View File
@@ -25,33 +25,49 @@ log() {
parse_args() {
DRY_RUN=${DRY_RUN:-false}
ENABLE_LOGGING=${ENABLE_LOGGING:-false}
for ARG in "$@"; do
if [[ "$ARG" == *=* ]]; then
VAR_NAME="${ARG%%=*}"
VAR_VALUE="${ARG#*=}"
if declare -p "$VAR_NAME" &>/dev/null; then
printf -v "$VAR_NAME" '%s' "$VAR_VALUE"
log "Override: $VAR_NAME=$VAR_VALUE"
else
warn "Unknown variable $VAR_NAME, ignoring."
fi
case "$VAR_NAME" in
LOG)
if [[ "$VAR_VALUE" == "true" ]]; then
ENABLE_LOGGING=true
info "Verbose logging enabled"
elif [[ "$VAR_VALUE" == "false" ]]; then
ENABLE_LOGGING=false
else
warn "Invalid value for LOG: $VAR_VALUE (use true/false)"
fi
;;
*)
if declare -p "$VAR_NAME" &>/dev/null; then
printf -v "$VAR_NAME" '%s' "$VAR_VALUE"
log "Overriding $VAR_NAME -> $VAR_VALUE"
else
warn "Unknown variable $VAR_NAME, ignoring."
fi
;;
esac
else
case "$ARG" in
--dry-run|-n)
DRY_RUN=true
info "Dry-run mode enabled"
;;
LOG=true|--log)
--log)
ENABLE_LOGGING=true
info "Verbose logging enabled"
;;
LOG=false)
--no-log)
ENABLE_LOGGING=false
;;
--help|-h)
echo "Usage: script [--dry-run|-n] [LOG=true] [VAR=value ...]"
echo "Usage: script <dir> [--dry-run|-n] [--log] [LOG=true] [VAR=value ...]"
exit 0
;;
*)