summaryrefslogtreecommitdiff
path: root/jenkins-helpers.sh
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2018-01-31 09:46:45 +0000
committerMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2018-01-31 10:15:34 +0000
commit340fae35d7360eaf71df50ad73af7a65f3381f36 (patch)
tree7fa6b58c81fad7c573f012f175fe372469d20a4f /jenkins-helpers.sh
parent0b46dee1969d22ebe2490f4680dcf04842584af9 (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.sh46
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"
+}