Parsing commandline arguments

This commit is contained in:
Bob Mottram 2015-01-16 21:05:12 +00:00
parent baf2a204fb
commit e723166fa2
1 changed files with 159 additions and 157 deletions

View File

@ -79,6 +79,8 @@
#
# Note that there are no spaces around the equals.
NO_OF_ARGS=$#
DOMAIN_NAME=
MY_USERNAME=
FREEDNS_SUBDOMAIN_CODE=
@ -372,170 +374,170 @@ function show_help {
echo "'$VARIANT_CHAT', '$VARIANT_SOCIAL', '$VARIANT_MEDIA', '$VARIANT_TOR_DONGLE' or '$VARIANT_WRITER'."
echo "If you wish to install everything except email then use the '$VARIANT_NONMAILBOX' variaint."
echo ''
exit 0
}
# Oddly it appears that command line parsing cannot be done inside of a function
while [[ $# > 1 ]]
do
key="$1"
case $key in
-h|--help)
show_help
;;
# username within /home
-u|--user)
shift
MY_USERNAME="$1"
;;
# microblog domain name
--microblogdomain)
shift
MICROBLOG_DOMAIN_NAME="$1"
;;
# microblog domain code (freedns)
--microblogcode)
shift
MICROBLOG_FREEDNS_SUBDOMAIN_CODE="$1"
;;
# wiki domain name
--wikidomain)
shift
WIKI_DOMAIN_NAME="$1"
;;
# wiki domain code (freedns)
--wikicode)
shift
WIKI_FREEDNS_SUBDOMAIN_CODE="$1"
;;
# blog domain name
--blogdomain)
shift
FULLBLOG_DOMAIN_NAME="$1"
;;
# blog domain code (freedns)
--blogcode)
shift
FULLBLOG_FREEDNS_SUBDOMAIN_CODE="$1"
;;
# owncloud domain name
--ownclouddomain)
shift
OWNCLOUD_DOMAIN_NAME="$1"
;;
# owncloud domain code (freedns)
--owncloudcode)
shift
OWNCLOUD_FREEDNS_SUBDOMAIN_CODE="$1"
;;
# redmatrix domain name
--redmatrixdomain)
shift
REDMATRIX_DOMAIN_NAME="$1"
;;
# redmatrix domain code (freedns)
--redmatrixcode)
shift
REDMATRIX_FREEDNS_SUBDOMAIN_CODE="$1"
;;
# default domain name
-d|--domain)
shift
DOMAIN_NAME="$1"
;;
# default domain code (freedns)
-c|--code)
shift
FREEDNS_SUBDOMAIN_CODE="$1"
;;
# The type of system
-s|--system)
shift
SYSTEM_TYPE="$1"
;;
# The dynamic DNS provider
--ddns)
shift
DDNS_PROVIDER="$1"
;;
# Username for the synamic DNS provider
--ddnsuser)
shift
DDNS_USERNAME="$1"
;;
# Password for the synamic DNS provider
--ddnspass)
shift
DDNS_PASSWORD="$1"
;;
# Whether this installation is on a Beaglebone Black
--bbb)
INSTALLING_ON_BBB="yes"
;;
# Domain name to use as a TLS time source
-t|--time)
shift
TLS_TIME_SOURCE1="$1"
;;
# Static IP address for the system
--ip)
shift
LOCAL_NETWORK_STATIC_IP_ADDRESS=$1
;;
# IP address for the internet router
--iprouter)
shift
ROUTER_IP_ADDRESS=$1
;;
# ssh port
--ssh)
shift
SSH_PORT=$1
;;
# public mailing list name
--list)
shift
PUBLIC_MAILING_LIST="$1"
;;
# Number of CPU cores
--cores)
shift
CPU_CORES=$1
;;
# my name
--name)
shift
MY_NAME="$1"
;;
# my email address
--email)
shift
MY_EMAIL_ADDRESS="$1"
;;
# USB drive
--usb)
shift
USB_DRIVE=$1
;;
# Enable CJDNS
--cjdns)
shift
ENABLE_CJDNS="yes"
;;
*)
# unknown option
;;
esac
shift
done
function parse_args {
if [ ! $1 ]; then
if [[ $NO_OF_ARGS == 0 ]]; then
show_help
exit 0
fi
while [[ $# > 1 ]]
do
key="$1"
case $key in
-h|--help)
show_help
exit 0
;;
# username within /home
-u|--user)
MY_USERNAME="$1"
shift
;;
# microblog domain name
--microblogdomain)
MICROBLOG_DOMAIN_NAME="$1"
shift
;;
# microblog domain code (freedns)
--microblogcode)
MICROBLOG_FREEDNS_SUBDOMAIN_CODE="$1"
shift
;;
# wiki domain name
--wikidomain)
WIKI_DOMAIN_NAME="$1"
shift
;;
# wiki domain code (freedns)
--wikicode)
WIKI_FREEDNS_SUBDOMAIN_CODE="$1"
shift
;;
# blog domain name
--blogdomain)
FULLBLOG_DOMAIN_NAME="$1"
shift
;;
# blog domain code (freedns)
--blogcode)
FULLBLOG_FREEDNS_SUBDOMAIN_CODE="$1"
shift
;;
# owncloud domain name
--ownclouddomain)
OWNCLOUD_DOMAIN_NAME="$1"
shift
;;
# owncloud domain code (freedns)
--owncloudcode)
OWNCLOUD_FREEDNS_SUBDOMAIN_CODE="$1"
shift
;;
# redmatrix domain name
--redmatrixdomain)
REDMATRIX_DOMAIN_NAME="$1"
shift
;;
# redmatrix domain code (freedns)
--redmatrixcode)
REDMATRIX_FREEDNS_SUBDOMAIN_CODE="$1"
shift
;;
# default domain name
-d|--domain)
DOMAIN_NAME="$1"
shift
;;
# default domain code (freedns)
-c|--code)
FREEDNS_SUBDOMAIN_CODE="$1"
shift
;;
# The type of system
-s|--system)
SYSTEM_TYPE="$1"
shift
;;
# The dynamic DNS provider
--ddns)
DDNS_PROVIDER="$1"
shift
;;
# Username for the synamic DNS provider
--ddnsuser)
DDNS_USERNAME="$1"
shift
;;
# Password for the synamic DNS provider
--ddnspass)
DDNS_PASSWORD="$1"
shift
;;
# Whether this installation is on a Beaglebone Black
--bbb)
INSTALLING_ON_BBB="$1"
shift
;;
# Domain name to use as a TLS time source
-t|--time)
TLS_TIME_SOURCE1="$1"
shift
;;
# Static IP address for the system
--ip)
LOCAL_NETWORK_STATIC_IP_ADDRESS=$1
shift
;;
# IP address for the internet router
--iprouter)
ROUTER_IP_ADDRESS=$1
shift
;;
# ssh port
--ssh)
SSH_PORT=$1
shift
;;
# public mailing list name
--list)
PUBLIC_MAILING_LIST="$1"
shift
;;
# Number of CPU cores
--cores)
CPU_CORES=$1
shift
;;
# my name
--name)
MY_NAME="$1"
shift
;;
# my email address
--email)
MY_EMAIL_ADDRESS="$1"
shift
;;
# USB drive
--usb)
USB_DRIVE=$1
shift
;;
# Enable CJDNS
--cjdns)
ENABLE_CJDNS="yes"
shift
;;
*)
# unknown option
;;
esac
shift
done
if [ ! -d /home/$MY_USERNAME ]; then
echo "There is no user '$MY_USERNAME' on the system. Use 'adduser $MY_USERNAME' to create the user."
exit 1