#!/bin/sh
set -e -u
-PARAMS=""
+SCRIPTNAME=termux-location
show_usage () {
- echo "usage: termux-location [OPTIONS]"
- echo "Get the device location. Options:"
- echo " -r, --request kind of request(s) to make [once/last/updates] (default: once)"
- echo " -p, --provider location provider [gps/network/passive] (default: gps)"
+ echo "usage: $SCRIPTNAME [-p provider] [-r request]"
+ echo "Get the device location."
+ echo " -p provider location provider [gps/network/passive] (default: gps)"
+ echo " -r request kind of request to make [once/last/updates] (default: once)"
+ exit 0
+}
+
+validate_provider () {
+ PROVIDER=$1
+ case "$PROVIDER" in
+ gps) ;;
+ network) ;;
+ passive) ;;
+ *) echo "$SCRIPTNAME: Unsupported provider: '$PROVIDER'"; exit 1;;
+ esac
}
-O=`busybox getopt -q -l request: -l provider: -- r:hp: "$@"`
-if [ $? != 0 ] ; then show_usage; exit 1 ; fi
-eval set -- "$O"
-while true; do
-case "$1" in
- -h|--help) show_usage; exit 0;;
- -r|--request) PARAMS="$PARAMS --es request $2"; shift 2;;
- -p|--provider) PARAMS="$PARAMS --es provider $2"; shift 2;;
- --) shift; break;;
- *) echo Error; show_usage; exit 1;;
-esac
+validate_request () {
+ REQUEST=$1
+ case "$REQUEST" in
+ once) ;;
+ last) ;;
+ updates) ;;
+ *) echo "$SCRIPTNAME: Unsupported request: '$REQUEST'"; exit 1;;
+ esac
+}
+
+PARAMS=""
+
+while getopts :hr:p: option
+do
+ case "$option" in
+ h) show_usage;;
+ r) validate_request $OPTARG; PARAMS="$PARAMS --es request $OPTARG";;
+ p) validate_provider $OPTARG; PARAMS="$PARAMS --es provider $OPTARG";;
+ ?) echo "$SCRIPTNAME: illegal option -$OPTARG"; exit 1;
+ esac
done
+shift $(($OPTIND-1))
-# Too many arguments:
-if [ $# != 0 ]; then show_usage; exit 1; fi
+if [ $# != 0 ]; then echo "$SCRIPTNAME: too many arguments"; exit 1; fi
@TERMUX_API@ Location $PARAMS