120 lines
3.6 KiB
Bash
Executable File
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}"
|