# HG changeset patch # User Kim Alvefur # Date 1721577521 -7200 # Node ID a9c75430cb26b56c6347056d6fe726870c46ef53 # Parent 46394b327d171e0aed622e465f72d66a05274076 mod_rest: use bash getopts to handle cli flags in example script diff -r 46394b327d17 -r a9c75430cb26 mod_rest/example/rest.sh --- a/mod_rest/example/rest.sh Mon Jul 15 20:02:25 2024 +0200 +++ b/mod_rest/example/rest.sh Sun Jul 21 17:58:41 2024 +0200 @@ -9,6 +9,12 @@ # shellcheck disable=SC1091 +SELF="${0##*/}" +function usage() { + echo "${SELF} [-h HOST] [-rw] [/path] kind=(message|presence|iq) ...." + # Last arguments are handed to HTTPie, so refer to its docs for further details +} + # Settings HOST="" DOMAIN="" @@ -25,24 +31,43 @@ fi if [[ $# == 0 ]]; then - echo "${0##*/} [-h HOST] [-rw] [/path] kind=(message|presence|iq) ...." - # Last arguments are handed to HTTPie, so refer to its docs for further details - exit 0 + usage + exit 1 fi -if [[ "$1" == "-h" ]]; then - HOST="$2" - shift 2 -elif [ -z "${HOST:-}" ]; then +while getopts 'r:h:' flag; do + case "$flag" in + r) + case "$OPTARG" in + o) + # Default + SESSION="session-read-only" + ;; + w) + # To e.g. save Accept headers to the session + SESSION="session" + ;; + *) + echo "E: -ro OR -rw" >&2 + exit 1 + ;; + esac + ;; + h) + HOST="$OPTARG" + ;; + *) + echo "E: Unknown flag '$flag'" >&2 + usage >&2 + exit 1 + esac +done +shift $((OPTIND-1)) + +if [ -z "${HOST:-}" ]; then HOST="$(hostname)" fi -if [[ "$1" == "-rw" ]]; then - # To e.g. save Accept headers to the session - SESSION="session" - shift 1 -fi - if [[ "$HOST" != *.* ]]; then # Assumes subdomain of your DOMAIN if [ -z "${DOMAIN:-}" ]; then