Diff

mod_rest/example/rest.sh @ 6211:750d64c47ec6 draft

Merge
author Trần H. Trung <xmpp:trần.h.trung@trung.fun>
date Tue, 18 Mar 2025 00:31:36 +0700
parent 5964:a9c75430cb26
line wrap: on
line diff
--- a/mod_rest/example/rest.sh	Tue Mar 18 00:19:25 2025 +0700
+++ b/mod_rest/example/rest.sh	Tue Mar 18 00:31:36 2025 +0700
@@ -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