Files
camera-operation/build/install.sh
2024-09-29 01:38:09 -04:00

110 lines
3.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# Function to check for required dependencies
check_dependencies() {
echo "Checking for required dependencies..."
# Check if Python is installed
if ! command -v python3 &> /dev/null; then
echo "Python3 is not installed. Please install it and try again."
exit 1
fi
# Check if venv is installed
if ! python3 -m venv --help &> /dev/null; then
echo "Python venv is not installed. Please install it and try again."
exit 1
fi
echo "All dependencies are satisfied."
}
# Function to choose installation type
choose_install_type() {
echo "Do you want to install the program locally or system-wide?"
echo "0) Cancel"
echo "1) Locally (current user)"
echo "2) System-wide (requires sudo)"
read -p "Choose an option [0/1/2]: " install_option
# Check if the input is valid
if [[ -z "$install_option" || ! "$install_option" =~ ^[012]$ ]]; then
echo "Invalid option. Exiting."
exit 1
fi
# If the user chooses to cancel
if [ "$install_option" -eq 0 ]; then
echo "Installation canceled."
exit 0
fi
return $install_option
}
# Function for local installation
local_install() {
echo "Starting local installation..."
VENV_DIR="$DIR/../venv"
SRC_FILE="$DIR/../src/camera-command.py"
# Check if the virtual environment exists, if not, create it
if [ ! -d "$VENV_DIR" ]; then
echo "Creating virtual environment..."
python3 -m venv "$VENV_DIR"
fi
# Install the required packages
echo "Installing dependencies..."
"$VENV_DIR/bin/pip" install -r "$DIR/requirements.txt"
# Make the wrapper script executable
chmod +x "$DIR/camera-command.sh"
echo "Local install complete. Manually run the startup script using ./camera-command.sh"
}
# Function for system-wide installation
system_wide_install() {
echo "Starting system-wide installation..."
VENV_DIR="/lib/python-venvs/camera-op-env"
SRC_DIR="/usr/local/share/camera-op/src"
# Create a directory for system-wide Python virtual environments if it doesn't exist
if [ ! -d "/lib/python-venvs" ]; then
sudo mkdir -p /lib/python-venvs
sudo chmod 755 /lib/python-venvs
fi
# Check if the virtual environment exists, if not, create it
if [ ! -d "$VENV_DIR" ]; then
echo "Creating system-wide virtual environment..."
sudo python3 -m venv "$VENV_DIR"
fi
# Install the required packages
echo "Installing dependencies system-wide..."
sudo "$VENV_DIR/bin/pip" install -r "$DIR/requirements.txt"
# Create the necessary directories and copy the source code
sudo mkdir -p "$SRC_DIR"
sudo cp "$DIR/../src/"* "$SRC_DIR/"
sudo cp "$DIR/camera-command.sh" "/usr/local/bin/camera-op"
sudo chmod +x "/usr/local/bin/camera-op"
echo "Global install complete. Run 'camera-op' from /usr/local/bin or in the shell."
}
# Main installation logic
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
check_dependencies
choose_install_type
install_option=$?
if [ "$install_option" -eq 1 ]; then
local_install
elif [ "$install_option" -eq 2 ]; then
system_wide_install
fi