cli-shezargs v0.5.10
cli-shezargs
A utility to make command-line shell args easy to use. (I should have called it "cli-sh-ez-args", but that seemed cumbersome.)
TL;DR
npm install -g cli-shezargsAnd then:
#!/bin/bash -e
eval "$(cli-shezargs $@)"Which parses your command-line args and creates bash variables (see below.)
For example, --foo=bar will get you:
foo=barOverview
I always hated the boiler plate at the top of all of my shell scripts:
#!/bin/bash -e
# Helper functions
die() {
echo "$@"
exit 1
}
# ...
# parse args
for param in "$@"; do
case $param in
--service=*)
service="${param#*=}"
;;
# ...
esac
done
# ...Now, I can just:
#!/bin/bash -e
# parse args and setup common functions
eval "$(cli-shezargs $@)"
# ...What You Get
The main benefit is that you will have variables set for each command-line
argument. But you also get die() and some other functions.
# "--foo=quxx" becomes
foo="quxx"
# and "beanie --foo-be=bar baby --foo-it --baz- --foo=quxx -- --not-an-arg" becomes
foo_be="bar"
foo_it="1"
unset baz
foo="quxx"
set -- "beanie" "baby" "--not-an-arg"That last line has the effect of setting $1 to "beanie", $2 to "baby", $3 to "--not-an-arg", and $# to 3.
Look at scripts/common.sh for the functions that you will have. Modify and submit a PR to add your favorites. :)
Options
# Easiest -- parses args and add helper functions from `scripts/common.sh`
eval "$(cli-shezargs $@)"
# Include file support
eval "$(cli-shezargs __f $$ $0 $@)"
# Really the easiest -- just gives scripts
eval "$(cli-shezargs)"File support gets you:
TMP_DIR,TMP_FILE,LOG_FILE, andJSON_FILE, which are set to newly-created temp files (in/tmp/...and using the PID to guarantee uniqueness).script_dir-- the dir for the bash script.
How To
You must have Node.js, and then:
Install:
npm install -g cli-shezargsPut this snippet at the top of your scripts:
eval "$(cli-shezargs $@)"And then use --this-style-of=command --line- --args