From 298cfec38bd597b3c171f11d0d4451f6134243cf Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Tue, 22 Jun 2021 18:04:57 -0300 Subject: src/git-permalink.sh.in: Fix #task-bebbe847-f552-be4b-b886-70a621162b69 The issue wan't with getopts but with my usage of it (well, now that's obvious that the problem wouldn't be in the implementation, but on how I was using). The problem was on: 1) my confusion on when and where to "shift"; 2) make sure to look for the "--help" and "--version" long flags before getopts, because it doesn't know about long flags. Those fixed, the tests are now working again. --- src/git-permalink.sh.in | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/git-permalink.sh.in b/src/git-permalink.sh.in index e0367bc..9c26293 100755 --- a/src/git-permalink.sh.in +++ b/src/git-permalink.sh.in @@ -94,19 +94,18 @@ version() { printf 'git-permalink-@VERSION@ @DATE@\n' } -PRINTONLY=false -while getopts 'phV' flag; do +# shellcheck disable=2068 +for flag in $@; do case "$flag" in - p) - PRINTONLY=true - shift + --) + break ;; - h) + --help) usage help exit ;; - V) + --version) version exit ;; @@ -115,19 +114,18 @@ while getopts 'phV' flag; do esac done -# shellcheck disable=2068 -for flag in $@; do +PRINTONLY=false +while getopts 'phV' flag; do case "$flag" in - --) - shift - break + p) + PRINTONLY=true ;; - --help) + h) usage help exit ;; - --version) + V) version exit ;; @@ -136,6 +134,8 @@ for flag in $@; do esac done +shift $(($OPTIND - 1)) + if [ -z "${1:-}" ]; then printf '%s\n\n' "$MSG_MISSING_FILE" >&2 usage >&2 -- cgit v1.2.3