diff options
author | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2018-01-31 09:46:45 +0000 |
---|---|---|
committer | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2018-01-31 10:15:34 +0000 |
commit | 340fae35d7360eaf71df50ad73af7a65f3381f36 (patch) | |
tree | 7fa6b58c81fad7c573f012f175fe372469d20a4f | |
parent | 0b46dee1969d22ebe2490f4680dcf04842584af9 (diff) |
jenkins-helpers.sh: New helper convert_args_to_variables
... to convert "--var val" and "++arr elem" arguments to variables.
Use in tcwg-upstream2gerrit.sh
Change-Id: I88bb8d6b366944626c71727227f12bdd33f7bb55
-rw-r--r-- | jenkins-helpers.sh | 46 | ||||
-rwxr-xr-x | tcwg-upstream2gerrit.sh | 10 |
2 files changed, 52 insertions, 4 deletions
diff --git a/jenkins-helpers.sh b/jenkins-helpers.sh index ab334d8c..64c330b9 100644 --- a/jenkins-helpers.sh +++ b/jenkins-helpers.sh @@ -1,4 +1,4 @@ -#/bin/bash +#!/bin/bash # $@: Jenkins labels # Prints nodes corresponding to jenkins labels. @@ -412,3 +412,47 @@ test_array() return 1 fi } + +# Process "--var value" and "++arr elem" arguments and define corresponding +# variables and arrays. +# "--var value" defines shell variable "$var" to "value". +# "++arr elem" defines shell array "$arr[@]" and adds "elem" to it. +# Shell array $CONVERTED_ARGS is set to the arguments processed. +# Shell variable $SHIFT_CONVERTED_ARGS is set to number of arguments processed. +# $@: Pairs of def/val arguments, stops at "--" marker. +convert_args_to_variables () +{ + local name + local num="0" + eval "CONVERTED_ARGS=()" + while [ $# -gt 0 ]; do + case "$1" in + "--") + # Finish marker + num=$(($num+1)) + shift 1 + break + ;; + "--"*) + name="${1#--}" + eval "$name=\"$2\"" + num=$(($num+2)) + ;; + "++"*) + name="${1#++}" + if ! test_array $name; then + eval "$name=()" + fi + eval "$name+=(\"$2\")" + num=$(($num+2)) + ;; + *) + echo "ERROR: option does not start with '--' or '++': $1" + exit 1 + ;; + esac + eval "CONVERTED_ARGS+=(\"$1\" \"$2\")" + shift 2 + done + eval "SHIFT_CONVERTED_ARGS=$num" +} diff --git a/tcwg-upstream2gerrit.sh b/tcwg-upstream2gerrit.sh index 3a909b7d..eba5aab5 100755 --- a/tcwg-upstream2gerrit.sh +++ b/tcwg-upstream2gerrit.sh @@ -1,6 +1,9 @@ #!/bin/bash -set -ex +set -ef -o pipefail + +. $(dirname $0)/jenkins-helpers.sh +convert_args_to_variables "$@" # Make shellcheck happy and workaround Jenkins not defining variables # for empty arguments. @@ -9,12 +12,13 @@ patches="${patches:-last}" project="${project:-gcc}" squash="${squash:-false}" filter="${filter:-false}" +verbose="${verbose:-true}" -# Jenkins doesn't define variables when parameter value is empty (like cflags), +# Jenkins doesn't define variables when parameter value is empty, # so enable "set -u" only after above binding of variables. set -u -. jenkins-helpers.sh +if $verbose; then set -x; fi rm -f pwclient wget http://people.linaro.org/~maxim.kuvyrkov/pwclient/pwclient |