From e43eb1177872f52e949fb5f0f93396ed94b0d093 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Sun, 2 Aug 2026 14:48:29 +0200 Subject: move to chezmoi --- home/dot_local/share/bin/executable_venvgen | 47 +++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 home/dot_local/share/bin/executable_venvgen (limited to 'home/dot_local/share/bin/executable_venvgen') 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' + -- cgit v1.2.3