summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-08-06 08:18:52 +0000
committerLars Wirzenius <liw@liw.fi>2021-08-06 08:18:52 +0000
commiteb0eb5b2910d643fd4a2cdd36c67941aa775ac54 (patch)
treea4df95081664ba80b4f2107cc9b5c330fe6bf5cb
parent1a8535a566cf6629084ceb9d208d8c645e726690 (diff)
parent47a7b4532a0f7cfd8c0b7f258f53df5d9929d0ab (diff)
downloadsubplot-eb0eb5b2910d643fd4a2cdd36c67941aa775ac54.tar.gz
Merge branch 'main' into 'main'
fix bash files read and add `--env` option See merge request subplot/subplot!196
-rw-r--r--share/bash/template/files.sh7
-rw-r--r--share/bash/template/template.sh.tera41
2 files changed, 44 insertions, 4 deletions
diff --git a/share/bash/template/files.sh b/share/bash/template/files.sh
index 50c935d..e27bf0d 100644
--- a/share/bash/template/files.sh
+++ b/share/bash/template/files.sh
@@ -3,15 +3,16 @@
# Store files embedded in the markdown input.
files_new() {
- dict_new _files
+ rm -rf "$_datadir/_files"
+ mkdir "$_datadir/_files"
}
files_set() {
- dict_set _files "$1" "$2"
+ printf "%s" "$2" >"$_datadir/_files/$1"
}
files_get() {
- dict_get _files "$1"
+ cat "$_datadir/_files/$1"
}
diff --git a/share/bash/template/template.sh.tera b/share/bash/template/template.sh.tera
index 79e7a15..0e67c4e 100644
--- a/share/bash/template/template.sh.tera
+++ b/share/bash/template/template.sh.tera
@@ -2,6 +2,40 @@
set -eu -o pipefail
+declare -a ENV
+
+TEMP="$(getopt --long env: -o e: -- "$@")"
+eval set -- "$TEMP"
+unset TEMP
+
+while true
+do
+ case "$1" in
+ '-e'|'--env')
+ case "$2" in
+ *=*)
+ # Use value from command-line
+ ENV=("${ENV[@]}" "$2")
+ ;;
+ *)
+ # Forward variable from environment
+ ENV=("${ENV[@]}" "$2=${!2}")
+ ;;
+ esac
+ shift 2
+ continue
+ ;;
+ '--')
+ shift
+ break
+ ;;
+ *)
+ echo Unexpected argument >&2
+ exit 1
+ ;;
+ esac
+done
+
#############################################################################
# Functions that implement steps.
@@ -124,7 +158,7 @@ scenario_{{ loop.index }}() {
# contains newlines.
envnames()
{
- python3 -c 'import os, sys; sys.stdout.write("".join("%s\n" % key for key in os.environ))'
+ env -0 | sed -z 's/^\([^=]\+\)=.*$/\1\n/' | tr '\0' '\n'
}
# Unset all environment variables. At the beginning of each scenario,
@@ -133,6 +167,11 @@ unset $(envnames)
export PATH=/bin:/usr/bin
export SHELL=/bin/sh
+# Include any configured environment variables
+for var in "${ENV[@]}"
+do
+ export "$var"
+done
#############################################################################
# Run the scenarios.