diff --git a/ct/huntarr.sh b/ct/huntarr.sh index f7c055a0..efc34566 100644 --- a/ct/huntarr.sh +++ b/ct/huntarr.sh @@ -24,69 +24,63 @@ function update_script() { check_container_storage check_container_resources - if [[ ! -f /opt/huntarr/main.py ]]; then + if [[ ! -f /opt/${APP}/main.py ]]; then msg_error "No ${APP} Installation Found!" exit fi - + setup_uv RELEASE=$(curl -fsSL https://api.github.com/repos/plexguide/Huntarr.io/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3)}') - if [[ "${RELEASE}" != "$(cat /opt/"${APP}"_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - msg_info "Stopping $APP" - systemctl stop huntarr - msg_ok "Stopped $APP" - - msg_info "Creating Backup" - if ls /opt/"${APP}"_backup_*.tar.gz &>/dev/null; then - rm -f /opt/"${APP}"_backup_*.tar.gz - msg_info "Removed previous backup" - fi - tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" /opt/"${APP}" - msg_ok "Backup Created" - - msg_info "Updating $APP to v${RELEASE}" - curl -fsSL -o "/opt/${APP}/${RELEASE}.zip" "https://github.com/plexguide/Huntarr.io/archive/refs/tags/${RELEASE}.zip" - unzip -q -o "/opt/${APP}/${RELEASE}.zip" -d /tmp - cp -rf "/tmp/Huntarr.io-${RELEASE}"/* /opt/"${APP}"/ - - msg_info "Updating Python dependencies" - cd /opt/"${APP}" || exit - if [[ -f "/opt/${APP}/.requirements_checksum" ]]; then - CURRENT_CHECKSUM=$(md5sum requirements.txt | awk '{print $1}') - STORED_CHECKSUM=$(cat .requirements_checksum) - - if [[ "$CURRENT_CHECKSUM" != "$STORED_CHECKSUM" ]]; then - msg_info "Requirements have changed. Performing full upgrade." - uv pip install -r requirements.txt --python /opt/"${APP}"/venv/bin/python - else - msg_info "Requirements unchanged. Verifying installation." - uv pip install -r requirements.txt --python /opt/"${APP}"/venv/bin/python - fi - else - if ! command -v uv &>/dev/null; then - msg_info "Installing UV package manager" - curl -LsSf https://astral.sh/uv/install.sh | sh - msg_ok "UV package manager installed" - fi - uv pip install -r requirements.txt --python /opt/"${APP}"/venv/bin/python - fi - md5sum requirements.txt | awk '{print $1}' >.requirements_checksum - msg_ok "Updated Python dependencies" - msg_ok "Updated $APP to v${RELEASE}" - - msg_info "Starting $APP" - systemctl start huntarr - msg_ok "Started $APP" - - msg_info "Cleaning Up" - rm -f "/opt/${APP}/${RELEASE}.zip" - rm -rf "/tmp/Huntarr.io-${RELEASE}" - msg_ok "Cleanup Completed" - - echo "${RELEASE}" >/opt/"${APP}"_version.txt - msg_ok "Update Successful" - else - msg_ok "No update required. ${APP} is already at v${RELEASE}" + if [[ -f /opt/${APP}_version.txt ]] && [[ "${RELEASE}" == "$(cat /opt/${APP}_version.txt)" ]]; then + msg_ok "No update required. ${APP} is already at ${RELEASE}" + exit fi + msg_info "Stopping $APP" + systemctl stop ${APP} + msg_ok "Stopped $APP" + + msg_info "Creating Backup" + if ls /opt/"${APP}"_backup_*.tar.gz &>/dev/null; then + rm -f /opt/"${APP}"_backup_*.tar.gz + msg_info "Removed previous backup" + fi + tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" /opt/"${APP}" + msg_ok "Backup Created" + + msg_info "Updating $APP to v${RELEASE}" + temp_file=$(mktemp) + curl -fsSL -o "$temp_file" "https://github.com/plexguide/Huntarr.io/archive/refs/tags/${RELEASE}.zip" + unzip -q -o "$temp_file" -d /tmp + cp -rf "/tmp/Huntarr.io-${RELEASE}"/* /opt/"${APP}"/ + + msg_info "Updating Python dependencies" + cd /opt/"${APP}" || exit + if [[ -f "/opt/${APP}/.requirements_checksum" ]]; then + CURRENT_CHECKSUM=$(md5sum requirements.txt | awk '{print $1}') + STORED_CHECKSUM=$(cat .requirements_checksum) + if [[ "$CURRENT_CHECKSUM" != "$STORED_CHECKSUM" ]]; then + msg_info "Requirements have changed. Performing full upgrade." + $STD uv pip install -r requirements.txt --python /opt/"${APP}"/venv/bin/python + else + msg_info "Requirements unchanged. Verifying installation." + $STD uv pip install -r requirements.txt --python /opt/"${APP}"/venv/bin/python + fi + else + $STD uv pip install -r requirements.txt --python /opt/"${APP}"/venv/bin/python + fi + md5sum requirements.txt | awk '{print $1}' >.requirements_checksum + msg_ok "Updated Python dependencies" + + msg_info "Starting $APP" + systemctl start ${APP} + msg_ok "Started $APP" + + msg_info "Cleaning Up" + rm -f "$temp_file" + rm -rf "/tmp/Huntarr.io-${RELEASE}" + msg_ok "Cleanup Completed" + + echo "${RELEASE}" >/opt/"${APP}"_version.txt + msg_ok "Updated $APP to v${RELEASE}" exit } diff --git a/install/huntarr-install.sh b/install/huntarr-install.sh index 732a3549..5748642b 100644 --- a/install/huntarr-install.sh +++ b/install/huntarr-install.sh @@ -24,20 +24,22 @@ msg_info "Installing Python" $STD apt-get install -y \ python3 \ python3-venv -$STD bash -c "curl -LsSf https://astral.sh/uv/install.sh | sh" -export PATH="/root/.local/bin:$HOME/.cargo/bin:$PATH" -command -v uv &>/dev/null msg_ok "Installed Python" -msg_info "Setting Up ${APPLICATION}" +msg_info "Setup uv" +setup_uv +msg_ok "Setup uv" + +msg_info "Setting Up Huntarr" RELEASE=$(curl -fsSL https://api.github.com/repos/plexguide/Huntarr.io/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') -$STD curl -fsSL -o "${RELEASE}.zip" "https://github.com/plexguide/Huntarr.io/archive/refs/tags/${RELEASE}.zip" -$STD unzip -q "${RELEASE}.zip" +temp_file=$(mktemp) +$STD curl -fsSL -o "$temp_file" "https://github.com/plexguide/Huntarr.io/archive/refs/tags/${RELEASE}.zip" +$STD unzip -q "$temp_file" $STD mv "${REPO_NAME}-${RELEASE}/" "/opt/${APPLICATION}" echo "${RELEASE}" >/opt/${APPLICATION}_version.txt $STD uv venv /opt/${APPLICATION}/venv $STD uv pip install --python /opt/${APPLICATION}/venv/bin/python -r /opt/${APPLICATION}/requirements.txt -msg_ok "Setup ${APPLICATION} Complete" +msg_ok "Setup Huntrarr Complete" msg_info "Creating Service" cat </etc/systemd/system/${APPLICATION}.service @@ -58,7 +60,7 @@ motd_ssh customize msg_info "Cleaning up" -rm -f "${RELEASE}.zip" +rm -f "$temp_file" $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleaned"