On 2014-06-13 23:53, Pat Riehecky wrote: <snip>
+# setup args in the right order for making getopt evaluation +# nice and easy. You'll need to read the manpages for more info +# or review getopt-parse.bash under /usr/share/doc from which much was borrowed +args=$(getopt -o hrcq -- "$@") +if [[ $? -ne 0 ]]; then
- usage
+fi +eval set -- "$args"
+RHELTAG=0 +QUIET=0 +WITHCOMMITHASH=0 +for arg in "$@"; do
This should be a while loop. `shift` alters the script's parameter list, not the list looped over by `for`. (The getopt-parse.bash example should probably have emphasised that as well as the need for quoting...)
Potential problem cases with this structure as it stands right now:
$0 -r -b c7 ... # BRANCH=-b (I think) $0 -b -b c7 # will probably trip unset variable error
In other words, do `while true`, shift the appropriate amount in each case, and make sure to break / exit where appropriate (including a catch-all should-not-happen case, as in the sample).
- case $1 in
-- )
# end of getopt args, shift off the -- and get out of the loop
shift
break 2
Not that it's likely to matter, but you only have one loop to break out of here.
;;
-r )
# skip any package with 'centos' in the dist area
RHELTAG=1
;;
-c )
# return with the commit hash as a prefix of the resulting srpm
WITHCOMMITHASH=1
;;
-q )
# suppress warnings
QUIET=1
;;
-b )
# Check this particular branch
BRANCH=$2
shift
shift
;;
-h )
# get help
usage
;;
- esac
+done
<snip>
+if [[ "x${BRANCH}" != 'x' ]]; then
- echo "Someone with git-foo, a little help?"
- exit 1
See Mike's additions to get_sources [1] for a way to find branches containing HEAD and/or the current branch.
+else
- loglist=$(git log --pretty="%H|%s" | filter)
+fi
[1] https://git.centos.org/blobdiff/centos-git-common.git/c61c1ca/get_sources.sh lines 62 to 86