diff --git a/src/freedombone b/src/freedombone index a932b725..4f50233b 100755 --- a/src/freedombone +++ b/src/freedombone @@ -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