diff options
author | Lars Wirzenius <liw@liw.fi> | 2021-08-06 08:18:52 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2021-08-06 08:18:52 +0000 |
commit | eb0eb5b2910d643fd4a2cdd36c67941aa775ac54 (patch) | |
tree | a4df95081664ba80b4f2107cc9b5c330fe6bf5cb /share | |
parent | 1a8535a566cf6629084ceb9d208d8c645e726690 (diff) | |
parent | 47a7b4532a0f7cfd8c0b7f258f53df5d9929d0ab (diff) | |
download | subplot-eb0eb5b2910d643fd4a2cdd36c67941aa775ac54.tar.gz |
Merge branch 'main' into 'main'
fix bash files read and add `--env` option
See merge request subplot/subplot!196
Diffstat (limited to 'share')
-rw-r--r-- | share/bash/template/files.sh | 7 | ||||
-rw-r--r-- | share/bash/template/template.sh.tera | 41 |
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. |