diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2017-07-27 12:38:43 -0300 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2017-07-27 12:38:43 -0300 |
commit | 1b09cefd5abe824ce545de343e9eddcda4d6c7b5 (patch) | |
tree | aae20c0886281caf8e0fdd10937122649f66231a | |
parent | 8b3d6363b901ebac30d858911191f4fc848e39d3 (diff) | |
download | scripts-1b09cefd5abe824ce545de343e9eddcda4d6c7b5.tar.gz scripts-1b09cefd5abe824ce545de343e9eddcda4d6c7b5.tar.bz2 |
Status: use getopt
-rwxr-xr-x | status | 62 |
1 files changed, 58 insertions, 4 deletions
@@ -4,8 +4,59 @@ # # Parameters -PROJECT="$1" -DELAY="$2" +BASENAME="`basename $0`" + +# Usage +function status_usage { + echo "usage: $BASENAME [-l|--long] [-d|--delay N] [project]" + + if [ -z "$1" ]; then + exit 1 + else + exit $1 + fi +} + +# See https://stackoverflow.com/questions/2721946/cross-platform-getopt-for-a-shell-script#4300224 +function status_options { + getopt -T > /dev/null + if [ $? -eq 4 ]; then + # GNU enhanced getopt is available + ARGS=`getopt --name "$BASENAME" --long loop,delay: --options ld: -- "$@"` + else + # Original getopt is available (no long option names, no whitespace, no sorting) + ARGS=`getopt ld: "$@"` + fi + + if [ $? -ne 0 ]; then + echo "$BASENAME: usage error" >&2 + status_usage 2 + fi + + eval set -- $ARGS + + while [ $# -gt 0 ]; do + case "$1" in + l|--loop) + LOOP="yes";; + d|--delay) + DELAY="$2" + shift;; + --) + shift + break;; + *) + status_usage + ;; + esac + shift + done + + if [ $# -gt 0 ]; then + PROJECT="$1" + shift + fi +} # Run status function status_run { @@ -42,8 +93,11 @@ function status_run { fi } +# Options +status_options $@ + # Dispatch -if [ "$PROJECT" == "--loop" ]; then +if [ "$LOOP" == "yes" ]; then PROJECT="" if [ -z "$DELAY" ]; then @@ -51,9 +105,9 @@ if [ "$PROJECT" == "--loop" ]; then fi while true; do + clear status_run sleep $DELAY - clear done else status_run |