Fix update functionality and improve documentation
- Fixed update detection in install scripts - Added Git availability checks to update system - Improved error handling for update endpoint - Added detailed Git requirements to README - Added troubleshooting section for update issues 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -28,6 +28,10 @@ source "${SCRIPT_DIR}/modules/utils-module.sh"
|
||||
echo -e "${BOLD}==================================================${NC}"
|
||||
echo -e "${BOLD} Transmission RSS Manager Installer ${NC}"
|
||||
VERSION=$(grep -oP '"version": "\K[^"]+' "${SCRIPT_DIR}/package.json" 2>/dev/null || echo "Unknown")
|
||||
# Check if package.json exists, if not suggest creating it
|
||||
if [ ! -f "${SCRIPT_DIR}/package.json" ]; then
|
||||
echo -e "${YELLOW}Warning: package.json not found. You may need to run 'npm init' first.${NC}"
|
||||
fi
|
||||
echo -e "${BOLD} Version ${VERSION} - Git Edition ${NC}"
|
||||
echo -e "${BOLD}==================================================${NC}"
|
||||
echo
|
||||
@@ -42,35 +46,74 @@ fi
|
||||
IS_UPDATE=false
|
||||
INSTALLATION_DETECTED=false
|
||||
|
||||
# Check for config.json file (primary indicator)
|
||||
if [ -f "${SCRIPT_DIR}/config.json" ]; then
|
||||
INSTALLATION_DETECTED=true
|
||||
fi
|
||||
|
||||
# Check for service file (secondary indicator)
|
||||
if [ -f "/etc/systemd/system/transmission-rss-manager.service" ]; then
|
||||
# Check if we have existing config info from install-script.sh
|
||||
if [ -n "$EXISTING_INSTALL_DIR" ] && [ -n "$EXISTING_CONFIG_PATH" ]; then
|
||||
INSTALLATION_DETECTED=true
|
||||
IS_UPDATE=true
|
||||
# Use the existing installation directory as our target
|
||||
INSTALL_DIR="$EXISTING_INSTALL_DIR"
|
||||
CONFIG_FILE="$EXISTING_CONFIG_PATH"
|
||||
log "INFO" "Using existing installation at $INSTALL_DIR detected by install-script.sh"
|
||||
export INSTALL_DIR
|
||||
else
|
||||
# Check for config.json file (primary indicator)
|
||||
POSSIBLE_CONFIG_LOCATIONS=(
|
||||
"${SCRIPT_DIR}/config.json"
|
||||
"/opt/transmission-rss-manager/config.json"
|
||||
"/etc/transmission-rss-manager/config.json"
|
||||
)
|
||||
|
||||
# Check if the service points to /opt/trans-install
|
||||
if grep -q "/opt/trans-install" "/etc/systemd/system/transmission-rss-manager.service"; then
|
||||
# Set INSTALL_DIR to match existing service file
|
||||
INSTALL_DIR="/opt/trans-install"
|
||||
log "INFO" "Found existing installation at /opt/trans-install - using this as installation directory"
|
||||
export INSTALL_DIR
|
||||
for CONFIG_PATH in "${POSSIBLE_CONFIG_LOCATIONS[@]}"; do
|
||||
if [ -f "$CONFIG_PATH" ]; then
|
||||
INSTALLATION_DETECTED=true
|
||||
IS_UPDATE=true
|
||||
INSTALL_DIR="$(dirname "$CONFIG_PATH")"
|
||||
CONFIG_FILE="$CONFIG_PATH"
|
||||
log "INFO" "Found existing installation at $INSTALL_DIR"
|
||||
export INSTALL_DIR
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Check for service file (secondary indicator) if no config file found
|
||||
if [ "$INSTALLATION_DETECTED" = "false" ] && [ -f "/etc/systemd/system/transmission-rss-manager.service" ]; then
|
||||
INSTALLATION_DETECTED=true
|
||||
IS_UPDATE=true
|
||||
|
||||
# Extract the installation directory from the service file
|
||||
SERVICE_INSTALL_DIR=$(grep "WorkingDirectory=" "/etc/systemd/system/transmission-rss-manager.service" | cut -d'=' -f2)
|
||||
if [ -n "$SERVICE_INSTALL_DIR" ]; then
|
||||
INSTALL_DIR="$SERVICE_INSTALL_DIR"
|
||||
log "INFO" "Found existing installation at $INSTALL_DIR from service file"
|
||||
export INSTALL_DIR
|
||||
|
||||
# Check for config file in the detected installation directory
|
||||
if [ -f "$INSTALL_DIR/config.json" ]; then
|
||||
CONFIG_FILE="$INSTALL_DIR/config.json"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check for data directory (tertiary indicator)
|
||||
if [ "$INSTALLATION_DETECTED" = "false" ] && [ -d "${SCRIPT_DIR}/data" ] && [ "$(ls -A "${SCRIPT_DIR}/data" 2>/dev/null)" ]; then
|
||||
INSTALLATION_DETECTED=true
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check for data directory (tertiary indicator)
|
||||
if [ -d "${SCRIPT_DIR}/data" ] && [ "$(ls -A "${SCRIPT_DIR}/data" 2>/dev/null)" ]; then
|
||||
INSTALLATION_DETECTED=true
|
||||
fi
|
||||
|
||||
if [ "$INSTALLATION_DETECTED" = true ]; then
|
||||
IS_UPDATE=true
|
||||
# Provide clear feedback about the installation type
|
||||
if [ "$IS_UPDATE" = "true" ]; then
|
||||
log "INFO" "Running in UPDATE mode - will preserve existing configuration"
|
||||
log "INFO" "Target installation directory: $INSTALL_DIR"
|
||||
if [ -n "$CONFIG_FILE" ]; then
|
||||
log "INFO" "Using configuration file: $CONFIG_FILE"
|
||||
fi
|
||||
|
||||
# Make sure the variables are set correctly
|
||||
echo -e "${YELLOW}Existing installation detected. Running in update mode.${NC}"
|
||||
echo -e "${GREEN}Your existing configuration will be preserved.${NC}"
|
||||
echo -e "${GREEN}Only application files will be updated.${NC}"
|
||||
else
|
||||
log "INFO" "Running in FRESH INSTALL mode"
|
||||
echo -e "${GREEN}Fresh installation. Will create new configuration.${NC}"
|
||||
fi
|
||||
export IS_UPDATE
|
||||
|
||||
Reference in New Issue
Block a user