#!/usr/bin/bash # Argument parsing if [[ $# -ne 1 ]]; then echo "Usage: $0 [--install|--uninstall|--help]" echo " --install Install the automation backend" echo " --uninstall Uninstall the automation backend" echo " --update Update the installation" echo " --help Show this help message" exit 0 fi key="$1" case $key in --install) INSTALL=true ;; --uninstall) UNINSTALL=true ;; --update) UPDATE=true ;; --help) echo "Usage: $0 [--install|--uninstall|--update|--help]" echo " --install Install the automation backend" echo " --uninstall Uninstall the automation backend" echo " --update Update the installation" echo " --help Show this help message" exit 0 ;; *) echo "Invalid argument: $key" exit 1 ;; esac TARGET_DIR="$HOME/.local/home-automation-backend" SUPERVISOR_CFG_NAME="home_automation_backend" APP_NAME="home-automation-backend" SUPERVISOR_CFG="$SUPERVISOR_CFG_NAME.conf" BASEDIR=$(dirname "$(realpath "$0")") # Install or uninstall based on arguments install_backend() { # Installation code here echo "Installing..." sudo supervisorctl stop $SUPERVISOR_CFG_NAME mkdir -p $TARGET_DIR cd $BASEDIR"/../src/" && go build -o $TARGET_DIR/$APP_NAME cp $BASEDIR/"$SUPERVISOR_CFG_NAME"_template.conf $BASEDIR/$SUPERVISOR_CFG sed -i "s+command=+command=$TARGET_DIR/$APP_NAME serve+g" $BASEDIR/$SUPERVISOR_CFG sed -i "s+directory=+directory=$TARGET_DIR+g" $BASEDIR/$SUPERVISOR_CFG sed -i "s+user=+user=$USER+g" $BASEDIR/$SUPERVISOR_CFG sed -i "s+group=+group=$USER+g" $BASEDIR/$SUPERVISOR_CFG sed -i "s+environment=+environment=HOME=\"$HOME\"+g" $BASEDIR/$SUPERVISOR_CFG sudo mv $BASEDIR/$SUPERVISOR_CFG /etc/supervisor/conf.d/$SUPERVISOR_CFG sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start $SUPERVISOR_CFG_NAME echo "Installation complete." } uninstall_backend() { # Uninstallation code here echo "Uninstalling..." sudo supervisorctl stop $SUPERVISOR_CFG_NAME sudo supervisorctl remove $SUPERVISOR_CFG_NAME sudo rm /etc/supervisor/conf.d/$SUPERVISOR_CFG rm -rf $TARGET_DIR/ echo "Uninstallation complete." echo "Config files and db is stored in $HOME/.config/home-automation" } update_backend() { uninstall_backend install_backend } if [[ $INSTALL ]]; then install_backend elif [[ $UNINSTALL ]]; then uninstall_backend elif [[ $UPDATE ]]; then update_backend else echo "Invalid argument: $key" exit 1 fi