]> gitweb.fluxo.info Git - scripts.git/commitdiff
Feat: adds run-on-venv
authorSilvio Rhatto <rhatto@riseup.net>
Fri, 14 Feb 2025 16:27:28 +0000 (13:27 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Fri, 14 Feb 2025 16:27:28 +0000 (13:27 -0300)
run-on-venv [new file with mode: 0755]

diff --git a/run-on-venv b/run-on-venv
new file mode 100755 (executable)
index 0000000..e6fdf7e
--- /dev/null
@@ -0,0 +1,51 @@
+#!/usr/bin/env bash
+#
+# Helper script to run a command inside a virtualenv
+#
+# This is too simple, and you might want to use
+# virtualenvwrapper instead:
+#
+#   https://tracker.debian.org/pkg/virtualenvwrapper
+#   https://virtualenvwrapper.readthedocs.io/en/latest/
+#   https://doughellmann.com/projects/virtualenvwrapper/
+#
+# Or pipx:
+#
+#   https://pipx.pypa.io/stable/
+#   https://tracker.debian.org/pkg/python-pipx
+#
+
+# Parameters
+BASENAME="`basename $0`"
+COMMAND="$1"
+VENV="${VENV:$HOME/.virtualenvs/$COMMAND}"
+
+# Check for a test
+if [ -z "$COMMAND" ]; then
+  echo "usage: $BASENAME <command> [args]"
+  exit 1
+fi
+
+# Deactivate any active virtualenv
+deactivate &> /dev/null
+
+# Create and activate a virtualenv as needed
+if [ ! -e "$VENV" ]; then
+  mkdir -p `dirname $VENV`
+  python -m venv $VENV
+  . $VENV/bin/activate
+  pip install --upgrade pip
+  pip install $COMMAND
+else
+  # Check for a virtualenv
+  if [ ! -e "$VENV/bin/activate" ]; then
+    echo "$BASENAME: missing or invalid virtualenv"
+    exit 1
+  fi
+
+  # Activate the virtualenv
+  . $VENV/bin/activate
+fi
+
+# Run
+$*