diff --git a/CLAUDE.md b/CLAUDE.md index 34fb57c..44d2dc0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -33,6 +33,18 @@ tea pr create ## Development Commands +### Quick Update Scripts + +For easier development and deployment updates: + +```bash +# Development update (pull, install, build, test) +./scripts/dev-update.sh + +# Production server update (requires sudo, handles service restart) +sudo ./scripts/server-update.sh +``` + ### Running the Application ```bash # Install dependencies diff --git a/scripts/dev-update.sh b/scripts/dev-update.sh new file mode 100755 index 0000000..ef30f7a --- /dev/null +++ b/scripts/dev-update.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# Development Update Script for Ice Watch Application +# Quick script for updating during development + +set -e + +# Colors for output +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +log() { + echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')] $1${NC}" +} + +warn() { + echo -e "${YELLOW}[$(date +'%Y-%m-%d %H:%M:%S')] $1${NC}" +} + +log "Starting development update..." + +# Pull latest changes +log "Pulling latest changes from git..." +git pull origin main + +# Install dependencies +log "Installing/updating dependencies..." +npm install + +# Build the application +log "Building application..." +npm run build + +# Run tests +log "Running tests..." +npm test + +log "✅ Development update completed successfully!" +log "You can now run 'npm start' or 'npm run dev:full' to start the application" \ No newline at end of file diff --git a/scripts/generate-version.js b/scripts/generate-version.js index 88c634c..c7076cb 100644 --- a/scripts/generate-version.js +++ b/scripts/generate-version.js @@ -25,7 +25,7 @@ try { commitDate: commitDate, commitMessage: commitMessage, buildDate: new Date().toISOString(), - gitUrl: 'https://git.deco.sh/deco/ice' + gitUrl: 'https://git.deco.sh/signal-works/icewatch' }; // Ensure dist directory exists @@ -55,7 +55,7 @@ try { commitDate: new Date().toISOString(), commitMessage: 'No git information available', buildDate: new Date().toISOString(), - gitUrl: 'https://git.deco.sh/deco/ice' + gitUrl: 'https://git.deco.sh/signal-works/icewatch' }; const distDir = path.join(__dirname, '..', 'dist'); diff --git a/scripts/server-update.sh b/scripts/server-update.sh new file mode 100755 index 0000000..ea0fc93 --- /dev/null +++ b/scripts/server-update.sh @@ -0,0 +1,86 @@ +#!/bin/bash + +# Server Update Script for Ice Watch Application +# This script handles updating the production server with proper user permissions + +set -e + +# Configuration +APP_DIR="/opt/icewatch" +APP_USER="icewatch" +SERVICE_NAME="icewatch" + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# Functions +log() { + echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')] $1${NC}" +} + +warn() { + echo -e "${YELLOW}[$(date +'%Y-%m-%d %H:%M:%S')] WARNING: $1${NC}" +} + +error() { + echo -e "${RED}[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: $1${NC}" + exit 1 +} + +# Check if running as root +if [[ $EUID -ne 0 ]]; then + error "This script must be run as root (use sudo)" +fi + +# Check if app directory exists +if [[ ! -d "$APP_DIR" ]]; then + error "Application directory $APP_DIR does not exist" +fi + +# Check if service exists +if ! systemctl list-unit-files | grep -q "$SERVICE_NAME.service"; then + error "Service $SERVICE_NAME does not exist" +fi + +log "Starting server update process..." + +# Stop the service +log "Stopping $SERVICE_NAME service..." +systemctl stop "$SERVICE_NAME" + +# Navigate to app directory as app user and update +log "Updating application code..." +sudo -u "$APP_USER" bash -c " + cd '$APP_DIR' && \ + git fetch origin && \ + git reset --hard origin/main && \ + npm install --production && \ + npm run build +" + +# Check if build was successful +if [[ $? -ne 0 ]]; then + error "Build failed! Check the logs above." +fi + +# Start the service +log "Starting $SERVICE_NAME service..." +systemctl start "$SERVICE_NAME" + +# Check service status +sleep 2 +if systemctl is-active --quiet "$SERVICE_NAME"; then + log "✅ Service $SERVICE_NAME is running successfully" +else + error "❌ Service $SERVICE_NAME failed to start" +fi + +# Show recent logs +log "Recent service logs:" +journalctl -u "$SERVICE_NAME" -n 10 --no-pager + +log "🎉 Server update completed successfully!" +log "Application is now running the latest version from main branch" \ No newline at end of file