#!/bin/bash # Check if pyproject.toml exists in the current directory if [ ! -f "pyproject.toml" ]; then echo "Poetry could not find a pyproject.toml file in the current directory or its parents." echo "Please navigate to the project directory where pyproject.toml is located and rerun this script." exit 1 fi # Installs poetry-based python dependencies echo "Installing python dependencies" poetry install # List of commands to check and add or update alias for commands=("fabric" "fabric-api" "fabric-webui") # List of shell configuration files to update config_files=("$HOME/.bashrc" "$HOME/.zshrc" "$HOME/.bash_profile") # Initialize an array to hold the paths of the sourced files source_commands=() for config_file in "${config_files[@]}"; do # Check if the configuration file exists if [ -f "$config_file" ]; then echo "Updating $config_file" for cmd in "${commands[@]}"; do # Get the path of the command CMD_PATH=$(poetry run which $cmd 2>/dev/null) # Check if CMD_PATH is empty if [ -z "$CMD_PATH" ]; then echo "Command $cmd not found in the current Poetry environment." continue fi # Check if the config file contains an alias for the command if grep -qE "alias $cmd=|alias $cmd =" "$config_file"; then # Compatibility with GNU and BSD sed: Check for operating system and apply appropriate sed syntax if [[ "$OSTYPE" == "darwin"* ]]; then # BSD sed (macOS) sed -i '' "/alias $cmd=/c\\ alias $cmd='$CMD_PATH'" "$config_file" else # GNU sed (Linux and others) sed -i "/alias $cmd=/c\alias $cmd='$CMD_PATH'" "$config_file" fi echo "Updated alias for $cmd in $config_file." else # If not, add the alias to the config file echo -e "\nalias $cmd='$CMD_PATH'" >>"$config_file" echo "Added alias for $cmd to $config_file." fi done # Add to source_commands array source_commands+=("$config_file") else echo "$config_file does not exist." fi done # Provide instruction to source the updated files if [ ${#source_commands[@]} -ne 0 ]; then echo "To apply the changes, please run the following command(s) in your terminal:" for file in "${source_commands[@]}"; do echo "source $file" done else echo "No configuration files were updated. No need to source." fi