mirror of
https://github.com/buchtioof/venv-setup.git
synced 2026-05-02 17:43:30 +02:00
updated script
This commit is contained in:
parent
accbc6cbd8
commit
47be65f721
@ -2,3 +2,6 @@
|
||||
simple script to avoid redundant python venv setup
|
||||
|
||||
the project is to continue to learn deeper bash scripting and try to make a script usable for everyone via package managers like homebrew, etc...
|
||||
|
||||
to run the script, use this command:
|
||||
'curl -fsSL https://raw.githubusercontent.com/TON_USER/TON_REPO/main/venvsetup.sh | bash -s'
|
||||
|
||||
160
venvsetup.sh
Normal file → Executable file
160
venvsetup.sh
Normal file → Executable file
@ -1,73 +1,109 @@
|
||||
#!/bin/bash
|
||||
|
||||
existing_venv=$(find . -maxdepth 2 -name "pyvenv.cfg")
|
||||
existing_req=$(find . -name "requirements.txt")
|
||||
|
||||
# IF EXISTING VENV HAVE SOMETHING, USE THIS PATH FOR WORK
|
||||
venv_path=${existing_venv::-11}
|
||||
|
||||
create_venv() {
|
||||
if [ -z "$existing_venv" ]; then
|
||||
echo "No venv found, creating one..."
|
||||
read -p "Type the name of your venv: " name
|
||||
echo "Creating $name virtual environement..."
|
||||
python3 -m venv $name
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
start_venv(){
|
||||
if [ -z "$VIRTUAL_ENV" ]; then
|
||||
echo "Enabling the venv..."
|
||||
source $venv_path/bin/activate
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
gitignore() {
|
||||
echo "Do you want the to add the venv in a .gitignore? (recomended)"
|
||||
read -p " y / n " choice
|
||||
if [ "$choice" = "y" ]; then
|
||||
echo "Adding the venv in a gitignore..."
|
||||
echo "$venv_path >> .gitignore"
|
||||
echo "Done!"
|
||||
elif [ "$choice" = "n" ];then
|
||||
echo "Got it!"
|
||||
else
|
||||
echo "No choices detected!"
|
||||
fi
|
||||
}
|
||||
|
||||
requirements(){
|
||||
if [ -n "$existing_req" ]; then
|
||||
echo "Packages required detected (requirements.txt), do you want to install them? "
|
||||
read -p " y / n " choice
|
||||
if [ "$choice" = "y" ]; then
|
||||
pip install -r requirements.txt
|
||||
echo "Done!"
|
||||
elif [ "$choice" = "n" ];then
|
||||
echo "Got it!"
|
||||
else
|
||||
echo "No choices detected!"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
set -e
|
||||
|
||||
echo "Python venv tool"
|
||||
echo "Make sure you are inside your workspace, this script will work if it finds the right folder"
|
||||
echo "Make sure you are inside your workspace"
|
||||
echo ""
|
||||
|
||||
# --- Detect existing venv (first match only)
|
||||
existing_venv=$(find . -maxdepth 2 -name pyvenv.cfg 2>/dev/null | head -n 1)
|
||||
existing_req=$(find . -name requirements.txt 2>/dev/null | head -n 1)
|
||||
|
||||
if [ -n "$existing_venv" ]; then
|
||||
venv_path="${existing_venv%/pyvenv.cfg}"
|
||||
else
|
||||
venv_path=""
|
||||
fi
|
||||
|
||||
# --- Create venv if none found
|
||||
create_venv() {
|
||||
if [ -z "$venv_path" ]; then
|
||||
echo "No virtual environment found."
|
||||
read -p "Type the name of your venv: " name
|
||||
echo "Creating virtual environment: $name"
|
||||
python3 -m venv "$name"
|
||||
venv_path="./$name"
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
# --- Add venv to .gitignore
|
||||
gitignore() {
|
||||
if [ -f .gitignore ]; then
|
||||
if grep -qx "$venv_path" .gitignore; then
|
||||
return
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Do you want to add the venv to .gitignore? (recommended)"
|
||||
read -p " y / n " choice
|
||||
if [ "$choice" = "y" ]; then
|
||||
echo "$venv_path" >> .gitignore
|
||||
echo "Added $venv_path to .gitignore"
|
||||
fi
|
||||
}
|
||||
|
||||
# --- Activate venv
|
||||
activate_venv() {
|
||||
if [ -f "$venv_path/bin/activate" ]; then
|
||||
echo "Enabling the venv..."
|
||||
# shellcheck disable=SC1090
|
||||
source "$venv_path/bin/activate"
|
||||
echo ""
|
||||
else
|
||||
echo "ERROR: activate script not found in $venv_path"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# --- Install requirements
|
||||
requirements() {
|
||||
if [ -n "$existing_req" ]; then
|
||||
echo "requirements.txt detected. Install dependencies?"
|
||||
read -p " y / n " choice
|
||||
if [ "$choice" = "y" ]; then
|
||||
pip install -r "$existing_req"
|
||||
echo "Dependencies installed"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# --- Install packages interactively
|
||||
installer() {
|
||||
read -p "Type the package you need to install: " package
|
||||
pip install "$package"
|
||||
}
|
||||
|
||||
alfred() {
|
||||
read -p "Do you want to install a package? (y / n) " choice
|
||||
if [ "$choice" != "y" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
installer
|
||||
|
||||
while true; do
|
||||
read -p "Do you want to install another package? (y / n) " choice
|
||||
if [ "$choice" = "y" ]; then
|
||||
installer
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
# ------------------ MAIN ------------------
|
||||
|
||||
create_venv
|
||||
|
||||
start_venv
|
||||
|
||||
gitignore
|
||||
|
||||
pip install --upgrade pip
|
||||
|
||||
activate_venv
|
||||
requirements
|
||||
alfred
|
||||
|
||||
echo "Your venv is setup and launched!"
|
||||
|
||||
|
||||
echo ""
|
||||
echo "Your venv is ready!"
|
||||
echo "To activate it later, run:"
|
||||
echo "source \"$venv_path/bin/activate\""
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user