diff mod_rest/example/rest.sh @ 5936:a9c75430cb26

mod_rest: use bash getopts to handle cli flags in example script
author Kim Alvefur <zash@zash.se>
date Sun, 21 Jul 2024 17:58:41 +0200
parents e5ad3f1f48bd
children
line wrap: on
line diff
--- 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