Initial commit

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Todd
2026-03-29 22:42:55 -04:00
commit 0d7b2b1aab
389 changed files with 280296 additions and 0 deletions

103
scripts/run-dependency-updates.sh Executable file
View File

@@ -0,0 +1,103 @@
#!/bin/bash
# Dependency Update Script
# Safely stops services, runs updates, and restarts services
# Designed to be run by systemd timer at scheduled intervals
set -e
LOG_FILE="/opt/media-downloader/logs/dependency-updates.log"
LOCK_FILE="/tmp/dependency-updates.lock"
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') $1" | tee -a "$LOG_FILE"
}
# Check for lock file to prevent concurrent runs
if [ -f "$LOCK_FILE" ]; then
log "[WARN] Another update process is running. Exiting."
exit 0
fi
# Create lock file
trap "rm -f $LOCK_FILE" EXIT
echo $$ > "$LOCK_FILE"
log "[INFO] =========================================="
log "[INFO] Starting dependency update process"
log "[INFO] =========================================="
# Check if scheduler is running
SCHEDULER_WAS_RUNNING=false
if systemctl is-active --quiet media-downloader; then
SCHEDULER_WAS_RUNNING=true
log "[INFO] Stopping scheduler for updates..."
systemctl stop media-downloader
# Wait for clean shutdown
sleep 5
log "[INFO] Scheduler stopped"
fi
# Run dependency updates
log "[INFO] Running dependency updates..."
cd /opt/media-downloader
/opt/media-downloader/venv/bin/python3 -c "
import sys
sys.path.insert(0, '/opt/media-downloader')
from modules.dependency_updater import DependencyUpdater
from modules.settings_manager import SettingsManager
# Load config
settings = SettingsManager()
config = settings.get_all()
update_config = config.get('dependency_updater', {}) or config.get('dependency_updates', {})
if not update_config.get('enabled', True):
print('[INFO] Dependency updates disabled in config')
sys.exit(0)
updater = DependencyUpdater(config=update_config, scheduler_mode=True)
results = updater.force_update_check()
print('[INFO] Update results:')
for component, updated in results.items():
status = 'Updated' if updated else 'Current'
print(f' - {component}: {status}')
" 2>&1 | tee -a "$LOG_FILE"
UPDATE_STATUS=$?
if [ $UPDATE_STATUS -eq 0 ]; then
log "[INFO] Dependency updates completed successfully"
else
log "[ERROR] Dependency updates failed with status $UPDATE_STATUS"
fi
# Restart API to pick up any Python package changes
log "[INFO] Restarting API service..."
systemctl restart media-downloader-api
sleep 2
if systemctl is-active --quiet media-downloader-api; then
log "[INFO] API service restarted successfully"
else
log "[ERROR] API service failed to restart!"
fi
# Restart scheduler if it was running
if [ "$SCHEDULER_WAS_RUNNING" = true ]; then
log "[INFO] Restarting scheduler..."
systemctl start media-downloader
sleep 3
if systemctl is-active --quiet media-downloader; then
log "[INFO] Scheduler restarted successfully"
else
log "[ERROR] Scheduler failed to restart!"
fi
fi
log "[INFO] =========================================="
log "[INFO] Dependency update process complete"
log "[INFO] =========================================="