Compare commits

...

1 Commits

Author SHA1 Message Date
Nick Brassel
855b234813
venv helper 2024-12-01 15:41:45 +11:00

38
util/venv.sh Executable file
View File

@ -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 "$@"