Files
calypso/rebuild-and-restart.sh
2026-01-09 16:54:39 +00:00

120 lines
3.6 KiB
Bash
Executable File

#!/bin/bash
# AtlasOS - Calypso Rebuild and Restart Script
# This script rebuilds both backend and frontend, then restarts the services
set -e # Exit on error
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Configuration
PROJECT_ROOT="/src/calypso"
BACKEND_DIR="${PROJECT_ROOT}/backend"
FRONTEND_DIR="${PROJECT_ROOT}/frontend"
INSTALL_DIR="/opt/calypso"
SERVICE_NAME="calypso-api"
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}AtlasOS - Calypso Rebuild & Restart${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
# Check if running as root
if [ "$EUID" -ne 0 ]; then
echo -e "${YELLOW}Warning: This script requires sudo privileges for some operations${NC}"
echo -e "${YELLOW}Some commands will be run with sudo${NC}"
echo ""
fi
# Step 1: Rebuild Backend
echo -e "${GREEN}[1/4] Rebuilding Backend...${NC}"
cd "${BACKEND_DIR}"
echo "Building Go binary..."
if go build -o "${INSTALL_DIR}/bin/calypso-api" ./cmd/calypso-api; then
echo -e "${GREEN}✓ Backend build successful${NC}"
else
echo -e "${RED}✗ Backend build failed${NC}"
exit 1
fi
# Set permissions for backend binary
echo "Setting permissions..."
sudo chmod +x "${INSTALL_DIR}/bin/calypso-api"
sudo chown calypso:calypso "${INSTALL_DIR}/bin/calypso-api"
echo -e "${GREEN}✓ Backend binary ready${NC}"
echo ""
# Step 2: Rebuild Frontend
echo -e "${GREEN}[2/4] Rebuilding Frontend...${NC}"
cd "${FRONTEND_DIR}"
echo "Installing dependencies (if needed)..."
npm install --silent 2>&1 | grep -E "(added|removed|changed|up to date)" || true
echo "Building frontend..."
if npm run build; then
echo -e "${GREEN}✓ Frontend build successful${NC}"
else
echo -e "${RED}✗ Frontend build failed${NC}"
exit 1
fi
echo ""
# Step 3: Deploy Frontend
echo -e "${GREEN}[3/4] Deploying Frontend...${NC}"
echo "Copying frontend files to ${INSTALL_DIR}/web/..."
sudo rm -rf "${INSTALL_DIR}/web/"*
sudo cp -r "${FRONTEND_DIR}/dist/"* "${INSTALL_DIR}/web/"
sudo chown -R www-data:www-data "${INSTALL_DIR}/web"
echo -e "${GREEN}✓ Frontend deployed${NC}"
echo ""
# Step 4: Restart Services
echo -e "${GREEN}[4/4] Restarting Services...${NC}"
# Restart Calypso API service
echo "Restarting ${SERVICE_NAME} service..."
if sudo systemctl restart "${SERVICE_NAME}.service"; then
echo -e "${GREEN}${SERVICE_NAME} service restarted${NC}"
# Wait a moment for service to start
sleep 2
# Check service status
if sudo systemctl is-active --quiet "${SERVICE_NAME}.service"; then
echo -e "${GREEN}${SERVICE_NAME} service is running${NC}"
else
echo -e "${YELLOW}${SERVICE_NAME} service may not be running properly${NC}"
echo "Check status with: sudo systemctl status ${SERVICE_NAME}.service"
fi
else
echo -e "${RED}✗ Failed to restart ${SERVICE_NAME} service${NC}"
exit 1
fi
# Reload Nginx (to ensure frontend is served correctly)
echo "Reloading Nginx..."
if sudo systemctl reload nginx 2>/dev/null || sudo systemctl reload nginx.service 2>/dev/null; then
echo -e "${GREEN}✓ Nginx reloaded${NC}"
else
echo -e "${YELLOW}⚠ Nginx reload failed (may not be installed)${NC}"
fi
echo ""
# Summary
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}Rebuild and Restart Complete!${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
echo "Backend binary: ${INSTALL_DIR}/bin/calypso-api"
echo "Frontend files: ${INSTALL_DIR}/web/"
echo ""
echo "Service status:"
sudo systemctl status "${SERVICE_NAME}.service" --no-pager -l | head -10
echo ""
echo -e "${GREEN}All done!${NC}"