summaryrefslogtreecommitdiff
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
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
-rw-r--r--jenkins-helpers.sh46
-rwxr-xr-xtcwg-upstream2gerrit.sh10
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