Browse Source

venv helper

Nick Brassel 1 year ago
parent
commit
855b234813
1 changed files with 38 additions and 0 deletions
  1. 38 0
      util/venv.sh

+ 38 - 0
util/venv.sh

@@ -0,0 +1,38 @@
+#!/usr/bin/env bash
+# This script is used to setup a virtual environment for QMK use, and subsequently allows running `qmk` commands from the virtual environment.
+
+# Exit on error
+set -eEuo pipefail
+umask 022
+
+# Find the QMK firmware directory
+this_script=$(realpath "${BASH_SOURCE[0]}")
+this_dir=$(dirname "$this_script")
+qmk_firmware_dir=$(realpath "$this_dir/..")
+
+# Allow overriding the virtual environment directory from the environment, if necessary
+if [ -z "${QMK_VENV_DIR:-}" ]; then
+    QMK_VENV_DIR="$qmk_firmware_dir/.venv"
+fi
+
+# Switch to the QMK firmware directory
+cd "$qmk_firmware_dir"
+
+# Check if the virtual environment exists
+if [ ! -d "$QMK_VENV_DIR" ]; then
+    echo "Creating virtual environment..."
+    python3 -m venv "$QMK_VENV_DIR"
+fi
+
+# Activate the virtual environment
+source "$QMK_VENV_DIR/bin/activate"
+
+# Install qmk into the venv if it's not already installed
+if [[ ! -e "$QMK_VENV_DIR/bin/qmk" ]]; then
+    echo "Installing QMK CLI..."
+    pip install --require-virtualenv --quiet --no-input --upgrade pip qmk
+    pip install --require-virtualenv --quiet --no-input --upgrade -r requirements-dev.txt
+fi
+
+# Run the arguments as if it were a `qmk` command
+exec "$@"