Files
calypso/installer/alpha/scripts/application.sh
2026-01-04 15:39:19 +07:00

94 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
#
# Application build and installation
#
build_and_install_application() {
log_info "Building and installing Calypso application..."
# Build backend
build_backend
# Build frontend
build_frontend
# Install binaries and assets
install_application_files
log_info "✓ Application built and installed"
}
build_backend() {
log_info "Building backend..."
cd "$PROJECT_ROOT/backend"
# Ensure Go is in PATH
export PATH=$PATH:/usr/local/go/bin
# Download dependencies
log_info "Downloading Go dependencies..."
go mod download
# Build binary
log_info "Building Go binary..."
go build -ldflags "-X main.version=$CALYPSO_VERSION -X main.buildTime=$(date -u +%Y-%m-%dT%H:%M:%SZ) -X main.gitCommit=$(git rev-parse --short HEAD 2>/dev/null || echo 'unknown')" \
-o "$INSTALL_PREFIX/releases/$CALYPSO_VERSION/bin/calypso-api" \
./cmd/calypso-api
if [[ -f "$INSTALL_PREFIX/releases/$CALYPSO_VERSION/bin/calypso-api" ]]; then
chmod +x "$INSTALL_PREFIX/releases/$CALYPSO_VERSION/bin/calypso-api"
log_info "✓ Backend built successfully"
else
log_error "Backend build failed"
exit 1
fi
}
build_frontend() {
log_info "Building frontend..."
cd "$PROJECT_ROOT/frontend"
# Install dependencies
if [[ ! -d "node_modules" ]]; then
log_info "Installing frontend dependencies..."
npm install
fi
# Build frontend
log_info "Building frontend assets..."
npm run build
# Copy built assets
if [[ -d "dist" ]]; then
log_info "Copying frontend assets..."
cp -r dist/* "$INSTALL_PREFIX/releases/$CALYPSO_VERSION/web/"
log_info "✓ Frontend built successfully"
else
log_error "Frontend build failed"
exit 1
fi
}
install_application_files() {
log_info "Installing application files..."
# Copy migrations
if [[ -d "$PROJECT_ROOT/db/migrations" ]]; then
cp -r "$PROJECT_ROOT/db/migrations"/* "$INSTALL_PREFIX/releases/$CALYPSO_VERSION/migrations/" 2>/dev/null || true
fi
# Copy scripts
if [[ -d "$PROJECT_ROOT/scripts" ]]; then
cp -r "$PROJECT_ROOT/scripts"/* "$INSTALL_PREFIX/releases/$CALYPSO_VERSION/scripts/" 2>/dev/null || true
chmod +x "$INSTALL_PREFIX/releases/$CALYPSO_VERSION/scripts"/*.sh 2>/dev/null || true
fi
# Set ownership
chown -R calypso:calypso "$INSTALL_PREFIX" 2>/dev/null || chown -R root:root "$INSTALL_PREFIX"
log_info "✓ Application files installed"
}