Files
lucidia-math/templates/SCRIPT-TEMPLATE.sh
Alexa Louise dbf28f72b5 feat: Sync latest templates from blackroad-sandbox
 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-12 01:38:20 -06:00

319 lines
7.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# ============================================================================
# BlackRoad OS - Proprietary Software
# Copyright (c) 2025 BlackRoad OS, Inc. / Alexa Louise Amundson
# All Rights Reserved.
# ============================================================================
#
# [Script Name]
# [One-line description of what this script does]
#
# Usage:
# ./script-name.sh # Interactive menu mode
# ./script-name.sh [command] [args] # Direct command mode
# ./script-name.sh --help # Show help
#
# Examples:
# ./script-name.sh deploy # Deploy service
# ./script-name.sh status # Check status
# ./script-name.sh logs # View logs
set -euo pipefail
# =============================================================================
# Configuration
# =============================================================================
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="${SCRIPT_DIR}"
LOG_FILE="${PROJECT_ROOT}/script-name.log"
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# =============================================================================
# Helper Functions
# =============================================================================
log() {
echo -e "${GREEN}${NC} $1"
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
}
error() {
echo -e "${RED}${NC} $1" >&2
echo "[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: $1" >> "$LOG_FILE"
}
warn() {
echo -e "${YELLOW}${NC} $1"
echo "[$(date +'%Y-%m-%d %H:%M:%S')] WARN: $1" >> "$LOG_FILE"
}
info() {
echo -e "${BLUE}${NC} $1"
}
# Check if command exists
command_exists() {
command -v "$1" >/dev/null 2>&1
}
# Check prerequisites
check_prerequisites() {
log "Checking prerequisites..."
local missing=0
if ! command_exists "python3"; then
error "python3 not found"
missing=1
fi
if ! command_exists "git"; then
error "git not found"
missing=1
fi
if [ $missing -eq 1 ]; then
error "Missing required dependencies"
exit 1
fi
log "All prerequisites met"
}
# =============================================================================
# Command Functions
# =============================================================================
cmd_deploy() {
log "Starting deployment..."
# Example deployment steps
cd "$PROJECT_ROOT"
# Pull latest code
log "Pulling latest code..."
git pull origin main
# Install dependencies
log "Installing dependencies..."
pip3 install -r requirements.txt
# Deploy to platform
log "Deploying to platform..."
railway up --service service-name
# Verify deployment
log "Verifying deployment..."
sleep 5
railway status
log "Deployment complete!"
}
cmd_status() {
log "Checking status..."
# Check local services
info "Local services:"
pgrep -f "python3.*blackroad" | while read pid; do
echo " PID $pid: $(ps -p $pid -o command=)"
done
# Check Railway
if command_exists "railway"; then
info "Railway status:"
railway status
fi
# Check health endpoints
info "Health checks:"
curl -sf http://localhost:8000/health && echo " ✅ Local API" || echo " ❌ Local API"
curl -sf https://api.blackroad.io/health && echo " ✅ Production API" || echo " ❌ Production API"
}
cmd_logs() {
log "Viewing logs..."
# Show local log
if [ -f "$LOG_FILE" ]; then
tail -n 50 "$LOG_FILE"
fi
# Show Railway logs if available
if command_exists "railway"; then
info "Railway logs:"
railway logs --tail 50
fi
}
cmd_start() {
log "Starting services..."
cd "$PROJECT_ROOT"
# Start service in background
PORT=8000 python3 blackroad-service.py &
# Wait for startup
sleep 2
# Verify
curl -sf http://localhost:8000/health && log "Service started successfully" || error "Service failed to start"
}
cmd_stop() {
log "Stopping services..."
# Kill all matching processes
pkill -f "python3.*blackroad-service" || warn "No processes found"
log "Services stopped"
}
cmd_test() {
log "Running tests..."
cd "$PROJECT_ROOT"
# Run unit tests
pytest -m unit -v
# Run integration tests
pytest -m integration -v
log "Tests complete"
}
cmd_clean() {
log "Cleaning up..."
cd "$PROJECT_ROOT"
# Remove cache files
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
find . -type f -name "*.pyc" -delete 2>/dev/null || true
# Remove log files
rm -f "$LOG_FILE"
log "Cleanup complete"
}
# =============================================================================
# Menu Functions
# =============================================================================
show_menu() {
echo ""
echo "╔════════════════════════════════════════╗"
echo "║ [Service Name] Management ║"
echo "╚════════════════════════════════════════╝"
echo ""
echo "Commands:"
echo " 1) deploy - Deploy to production"
echo " 2) status - Check service status"
echo " 3) logs - View logs"
echo " 4) start - Start local service"
echo " 5) stop - Stop local service"
echo " 6) test - Run tests"
echo " 7) clean - Clean up files"
echo " q) quit - Exit"
echo ""
}
interactive_menu() {
while true; do
show_menu
read -rp "Choose command: " choice
case $choice in
1|deploy) cmd_deploy ;;
2|status) cmd_status ;;
3|logs) cmd_logs ;;
4|start) cmd_start ;;
5|stop) cmd_stop ;;
6|test) cmd_test ;;
7|clean) cmd_clean ;;
q|quit) log "Goodbye!"; exit 0 ;;
*) error "Invalid choice: $choice" ;;
esac
echo ""
read -rp "Press Enter to continue..."
done
}
# =============================================================================
# Help Function
# =============================================================================
show_help() {
cat <<EOF
[Script Name] - [Description]
Usage:
$0 [command] [args]
Commands:
deploy Deploy to production
status Check service status
logs View logs
start Start local service
stop Stop local service
test Run tests
clean Clean up files
menu Show interactive menu (default)
help Show this help message
Examples:
$0 # Interactive menu mode
$0 deploy # Deploy to production
$0 status # Check status
$0 logs # View logs
Environment Variables:
RAILWAY_TOKEN Railway API token (required for deploy)
PORT Service port (default: 8000)
For more information, see README.md
EOF
}
# =============================================================================
# Main Script Logic
# =============================================================================
main() {
# Check prerequisites
check_prerequisites
# Handle command
case "${1:-menu}" in
deploy) cmd_deploy ;;
status) cmd_status ;;
logs) cmd_logs ;;
start) cmd_start ;;
stop) cmd_stop ;;
test) cmd_test ;;
clean) cmd_clean ;;
menu|"") interactive_menu ;;
-h|--help|help) show_help ;;
*)
error "Unknown command: $1"
echo ""
show_help
exit 1
;;
esac
}
# Run main function
main "$@"