diff --git a/scripts/install-moonraker.sh b/scripts/install-moonraker.sh index 9b9c182..ef5c11a 100755 --- a/scripts/install-moonraker.sh +++ b/scripts/install-moonraker.sh @@ -3,6 +3,9 @@ # Raspbian/Raspberry Pi OS based distributions. PYTHONDIR="${HOME}/moonraker-env" +REBUILD_ENV="n" +FORCE_DEFAULTS="n" +CONFIG_PATH="${HOME}/moonraker.conf" # Step 1: Verify Klipper has been installed check_klipper() @@ -19,7 +22,7 @@ check_klipper() # Step 2: Install packages install_packages() { - PKGLIST="python3-virtualenv python3-dev nginx libopenjp2-7" + PKGLIST="python3-virtualenv python3-dev nginx libopenjp2-7 python3-libgpiod" # Update system package info report_status "Running apt-get update..." @@ -33,10 +36,15 @@ install_packages() # Step 3: Create python virtual environment create_virtualenv() { - report_status "Updating python virtual environment..." + report_status "Installing python virtual environment..." - # Create virtualenv if it doesn't already exist - [ ! -d ${PYTHONDIR} ] && virtualenv -p /usr/bin/python3 ${PYTHONDIR} + # If venv exists and user prompts a rebuild, then do so + if [ -d ${PYTHONDIR} ] && [ $REBUILD_ENV = "y" ]; then + report_status "Removing old virtualenv" + rm -rf ${PYTHONDIR} + fi + + [ ! -d ${PYTHONDIR} ] && virtualenv -p /usr/bin/python3 --system-site-packages ${PYTHONDIR} # Install/update dependencies ${PYTHONDIR}/bin/pip install -r ${SRCDIR}/scripts/moonraker-requirements.txt @@ -54,7 +62,7 @@ install_script() install_config() { DEFAULTS_FILE=/etc/default/moonraker - [ -f $DEFAULTS_FILE ] && return + [ -f $DEFAULTS_FILE ] && [ $FORCE_DEFAULTS = "n" ] && return report_status "Installing system start configuration..." sudo /bin/sh -c "cat > $DEFAULTS_FILE" <<EOF @@ -64,7 +72,7 @@ MOONRAKER_USER=$USER MOONRAKER_EXEC=${PYTHONDIR}/bin/python -MOONRAKER_ARGS="${SRCDIR}/moonraker/moonraker.py" +MOONRAKER_ARGS="${SRCDIR}/moonraker/moonraker.py -c ${CONFIG_PATH}" EOF } @@ -98,6 +106,15 @@ set -e # Find SRCDIR from the pathname of this script SRCDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/.. && pwd )" +# Parse command line arguments +while getopts "rfc:" arg; do + case $arg in + r) REBUILD_ENV="y";; + f) FORCE_DEFAULTS="y";; + c) CONFIG_PATH=$OPTARG;; + esac +done + # Run installation steps defined above verify_ready check_klipper