diff options
| author | Loek Le Blansch <loek@pipeframe.xyz> | 2026-08-02 14:48:29 +0200 |
|---|---|---|
| committer | Loek Le Blansch <loek@pipeframe.xyz> | 2026-08-02 14:48:29 +0200 |
| commit | e43eb1177872f52e949fb5f0f93396ed94b0d093 (patch) | |
| tree | 78b73af6a989fa2996d71b112e161b70d35081ef /home/dot_local/share/bin/executable_venvgen | |
| parent | 2f14a896e4b897bd747c24d7ad8e9e7bb3237d03 (diff) | |
move to chezmoi
Diffstat (limited to 'home/dot_local/share/bin/executable_venvgen')
| -rw-r--r-- | home/dot_local/share/bin/executable_venvgen | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/home/dot_local/share/bin/executable_venvgen b/home/dot_local/share/bin/executable_venvgen new file mode 100644 index 0000000..25f2c78 --- /dev/null +++ b/home/dot_local/share/bin/executable_venvgen @@ -0,0 +1,47 @@ +#!/bin/sh + +# check if the input is valid +for arg in "$@" ; do + case "$arg" in + *=*) ;; + *) + echo "error: missing assignment operator in argument ($arg)" >&2 + exit 1 + ;; + esac +done + +# shebang +printf '#!/bin/sh\n' + +# save old variables +for arg in "$@" ; do + name="${arg%%=*}" + eval "hasval=\${$name+x}" + [ -n "$hasval" ] && printf '_%s="${%s}"\n' "$name" "$name" +done + +# set new variables +for arg in "$@" ; do + name="${arg%%=*}" + value="${arg#*=}" + printf 'export %s=%q\n' "$name" "$value" +done + +# deactivate function +printf 'deactivate() {\n' +for arg in "$@" ; do + name="${arg%%=*}" + eval "hasval=\${$name+x}" + if [ -n "$hasval" ] ; then + printf '\t%s="${_%s}"\n' "$name" "$name" + printf '\tunset -v _%s\n' "$name" + else + printf '\tunset -v %s\n' "$name" + fi +done +printf '\thash -r 2>/dev/null\n' +printf '\tunset -f deactivate\n' +printf '}\n' +printf 'hash -r 2>/dev/null\n' + |