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 /jenkins-helpers.sh | |
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
Diffstat (limited to 'jenkins-helpers.sh')
-rw-r--r-- | jenkins-helpers.sh | 46 |
1 files changed, 45 insertions, 1 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" +} |