create scripts to freeze deps for each env, and install modules to specific env's

This commit is contained in:
Joel Mathew Thomas
2025-01-26 16:32:10 +05:30
parent fcef4c958d
commit d91d331def
3 changed files with 126 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
#!/bin/bash
# Check if the script is running in the root directory of the project
PROJECT_ROOT="freq-split-enhance"
CURRENT_DIR=$(basename "$PWD")
if [ "$CURRENT_DIR" != "$PROJECT_ROOT" ]; then
echo "This script must be run in the root directory of the project: '$PROJECT_ROOT'."
exit 1
fi
# Check if the envs/ directory exists
if [ ! -d "envs" ]; then
echo "Directory 'envs/' does not exist. Please make sure it exists and contains the required environments. Please run the scripts/setup_env.sh script."
exit 1
fi
# Check if the requirements/ directory exists, create it if not
if [ ! -d "requirements" ]; then
echo "Directory 'requirements/' does not exist. Creating it..."
mkdir requirements
fi
# Function to freeze the dependencies of an environment
freeze_env_deps() {
local env_dir=$1
local requirements_file=$2
echo "Freezing dependencies for environment '$env_dir'..."
source "$env_dir/bin/activate" # Activate the environment
pip freeze > "$requirements_file" # Freeze the dependencies
deactivate # Deactivate the environment
echo "Dependencies for '$env_dir' saved to '$requirements_file'."
}
# Loop through all the environments inside envs/
for env_dir in envs/*; do
if [ -d "$env_dir" ]; then
env_name=$(basename "$env_dir")
requirements_file="requirements/$env_name.txt"
freeze_env_deps "$env_dir" "$requirements_file"
fi
done
echo "Dependencies for all environments have been successfully frozen."
+69
View File
@@ -0,0 +1,69 @@
#!/bin/bash
# Check if the script is running in the root directory of the project
PROJECT_ROOT="freq-split-enhance"
CURRENT_DIR=$(basename "$PWD")
if [ "$CURRENT_DIR" != "$PROJECT_ROOT" ]; then
echo "This script must be run in the root directory of the project: '$PROJECT_ROOT'."
exit 1
fi
# Check if the envs/ directory exists
if [ ! -d "envs" ]; then
echo "Directory 'envs/' does not exist. Please make sure it exists and contains the required environments. Please run the scripts/setup_env.sh script."
exit 1
fi
# List all environments in the envs/ directory
echo "Available environments:"
env_count=0
envs_list=()
for env_dir in envs/*; do
if [ -d "$env_dir" ]; then
env_name=$(basename "$env_dir")
envs_list+=("$env_name")
echo "$((env_count + 1)). $env_name"
((env_count++))
fi
done
# Check if any environments exist
if [ "$env_count" -eq 0 ]; then
echo "No environments found in 'envs/'. Please create them first."
exit 1
fi
# Ask the user to select an environment
read -p "Select an environment (1-$env_count): " env_choice
# Validate the user's choice
if [[ ! "$env_choice" =~ ^[0-9]+$ ]] || [ "$env_choice" -lt 1 ] || [ "$env_choice" -gt "$env_count" ]; then
echo "Invalid choice. Please select a number between 1 and $env_count."
exit 1
fi
# Get the selected environment name
selected_env="${envs_list[$((env_choice - 1))]}"
# Ask the user for the module they want to install
read -p "Enter the module you want to install in the '$selected_env' environment: " module_name
# Function to install a module in the selected environment
install_module() {
local env_dir=$1
local module=$2
echo "Activating environment '$env_dir' and installing module '$module'..."
source "$env_dir/bin/activate" # Activate the environment
pip install "$module" # Install the module
deactivate # Deactivate the environment
echo "Module '$module' installed successfully in '$env_dir'."
}
# Install the module in the selected environment
install_module "envs/$selected_env" "$module_name"
echo "Module installation complete."
+11
View File
@@ -1,3 +1,14 @@
#!/bin/bash
# Check if the script is running in the root directory of the project
PROJECT_ROOT="freq-split-enhance"
CURRENT_DIR=$(basename "$PWD")
if [ "$CURRENT_DIR" != "$PROJECT_ROOT" ]; then
echo "This script must be run in the root directory of the project: '$PROJECT_ROOT'."
exit 1
fi
echo "Setting up virtual environments"
mkdir envs