diff options
author | Egor Tensin <Egor.Tensin@gmail.com> | 2022-01-06 20:25:02 +0300 |
---|---|---|
committer | Egor Tensin <Egor.Tensin@gmail.com> | 2022-01-06 20:25:02 +0300 |
commit | a19a6d4fe1dab27daf20cd6a532f85d9bca3218c (patch) | |
tree | 0156d57c046cc4cff249c739ff0e41b83d7c119d /links-chmod | |
parent | db.sh: add parse_mode function (diff) | |
download | config-links-a19a6d4fe1dab27daf20cd6a532f85d9bca3218c.tar.gz config-links-a19a6d4fe1dab27daf20cd6a532f85d9bca3218c.zip |
links-chmod: mode parameter is mandatoryv2.0
Diffstat (limited to 'links-chmod')
-rwxr-xr-x | links-chmod | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/links-chmod b/links-chmod index 8eb8849..9810cf6 100755 --- a/links-chmod +++ b/links-chmod @@ -5,7 +5,7 @@ # For details, see https://github.com/egor-tensin/config-links. # Distributed under the MIT License. -# usage: ./links-chmod [-h|--help] [-d|--database PATH] [-s|--shared-dir DIR] [-m|--mode MODE] [-n|--dry-run] +# usage: ./links-chmod [-h|--help] [-d|--database PATH] [-s|--shared-dir DIR] [-n|--dry-run] MODE set -o errexit set -o nounset @@ -32,16 +32,18 @@ script_usage() { echo "$script_name: $msg" done - echo "usage: $script_name [-h|--help] [-d|--database PATH] [-s|--shared-dir DIR] [-n|--dry-run] + echo "usage: $script_name [-h|--help] [-d|--database PATH] [-s|--shared-dir DIR] [-n|--dry-run] MODE + MODE shared files mode (as in chmod) -h,--help show this message and exit -d,--database set database file path -s,--shared-dir set top-level shared directory path (current working directory by default) - -m,--mode shared files mode (as in chmod) -n,--dry-run don't actually do anything intrusive" } parse_script_options() { + local -a args=() + while [ "$#" -gt 0 ]; do local key="$1" shift @@ -55,12 +57,19 @@ parse_script_options() { set_dry_run continue ;; - -d|--database|-s|--shared-dir|-m|--mode) + -d|--database|-s|--shared-dir) ;; - *) + --) + break + ;; + -*) script_usage "unrecognized parameter: $key" >&2 exit 1 ;; + *) + args+=("$key") + continue + ;; esac if [ "$#" -eq 0 ]; then @@ -78,17 +87,25 @@ parse_script_options() { -s|--shared-dir) update_shared_dir "$value" ;; - -m|--mode) - mode="$( parse_mode "$value" )" - ;; *) script_usage "unrecognized parameter: $key" >&2 exit 1 ;; esac done + + args+=("$@") + + if [ "${#args[@]}" -ne 1 ]; then + script_usage "missing parameter MODE" >&2 + exit 1 + fi + + mode="$( parse_mode "${args[0]}" )" } +mode='' + main() { parse_script_options "$@" read_database |