From d215dea5b006dbc5c66dc0fd3c998c6a0fd0eafd Mon Sep 17 00:00:00 2001 From: Emanuele Petriglia Date: Sat, 16 Jun 2018 11:51:23 +0200 Subject: [PATCH] Improve parsing of command line options --- updater.sh | 56 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 46 insertions(+), 10 deletions(-) diff --git a/updater.sh b/updater.sh index ce02c57..8e7f244 100755 --- a/updater.sh +++ b/updater.sh @@ -5,17 +5,23 @@ # Copyright (C) 2018 Emanuele Petriglia . # All right reserved. This file is licensed under the MIT license. # +# Special requirements (beyond Bash): wget and mktemp. +# # Version: 1.4 # # Please read the wiki or run 'updater.sh --help' to get informations about this # script. +# +# Report bugs to https://github.com/ghacksuserjs/ghacks-user.js/issues + +readonly VERSION="1.4" # Default values for flags. QUIET="false" VERBOSE="false" FORCE_VERSION="false" UPDATED="false" -VERSION="1.4" + # Prints a message to the standard error and exit with error code 1. error() { @@ -73,6 +79,8 @@ Options: --help Print this message --version Print script version +Please run this script from your Firefox profile directory. + Please note that it is not given the option '--force-version' this script will download the latest version available, that can be unstable. @@ -87,11 +95,12 @@ show_version() { # Updates the user.js. update_userjs() { - # Run the recenlty downloader version of this script. + # Run the recently downloader version of this script. if [[ "$UPDATED" == "true" ]]; then source "$PROGRAM" $@ exit 0 fi + echo "aggiornato" } # Check if a program is installed. If it is not installed prints an error. @@ -106,14 +115,41 @@ PROGRAM="${0##*/}" check_utily "wget" check_utily "mktemp" -case "$1" in - --update|-u) shift; update_installer "$@";; - --force-version|-f) shift; FORCE_VERSION="yes";; - --quiet|-q) shift; QUIET="yes";; - --verbose) shift; VERBOSE="true";; - --help|-h) shift; show_help;; - --version|-v) shift; show_version;; -esac +UPDATE_INSTALLER="false" +SHOW_HELP="false" +SHOW_VERSION="false" + +# Parse command line options. +while :; do + case "$1" in + --update|-u) shift; UPDATE_INSTALLER="true";; + --force-version|-f) shift; FORCE_VERSION="true";; + --quiet|-q) shift; QUIET="true";; + --verbose) shift; VERBOSE="true";; + --help|-h) shift; SHOW_HELP="true";; + --version|-v) shift; SHOW_VERSION="true";; + "") break;; # Default case: no more options. + *) error "Unrecognized option '$1'";; + esac +done + +if [[ "$VERBOSE" == "true" && "$QUIET" == "true" ]]; then + error "You can't use '--verbose' and '--quiet' options together" +fi + +if [[ "$SHOW_HELP" == "true" ]]; then + show_help + exit 0 +fi + +if [[ "$SHOW_VERSION" == "true" ]]; then + show_version + exit 0 +fi + +if [[ "$UPDATE_INSTALLER" == "true" ]]; then + update_installer +fi update_userjs