Files
django-vue3-admin/make.ps1
T
lewis_yan f6313a93ce feat: add cross-platform service management scripts
Add comprehensive scripts for managing PIS project services:
- start-backend.ps1/.sh: Start Django backend with uvicorn/gunicorn
- start-frontend.ps1/.sh: Start Vue frontend dev server
- start-celery.ps1/.sh: Start Celery worker and beat
- stop-all.ps1/.sh: Stop all services gracefully
- stop-celery.ps1/.sh: Stop Celery services only
- view-logs.ps1/.sh: View and tail log files
- check-status.ps1/.sh: Check service status and ports

Cross-platform support:
- Windows PowerShell scripts with English output (UTF-8 safe)
- Unix/Linux/macOS Bash scripts with Chinese output
- WMI queries for PowerShell 5.1 compatibility
- Unified Makefile and make.ps1 orchestrators

Also add scripts-documentation.md with comprehensive usage guide.
2026-04-01 19:11:45 +08:00

203 lines
6.9 KiB
PowerShell

# ============================================================
# PIS Project Startup Script - Windows PowerShell Makefile
# ============================================================
# Usage:
# .\make.ps1 help Show all commands
# .\make.ps1 dev Start dev environment (frontend + backend + Celery)
# .\make.ps1 dev-backend Start backend only
# .\make.ps1 dev-frontend Start frontend only
# .\make.ps1 dev-celery Start Celery only
# .\make.ps1 stop Stop all services
# .\make.ps1 status Check service status
# .\make.ps1 logs View all logs
# .\make.ps1 logs-backend View backend logs
# .\make.ps1 logs-frontend View frontend logs
# .\make.ps1 logs-celery View Celery logs
# .\make.ps1 restart Restart all services
# .\make.ps1 restart-celery Restart Celery
# ============================================================
param(
[string]$Target = "help",
[string]$ENV = "dev"
)
$ErrorActionPreference = "Continue"
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$ProjectRoot = $ScriptDir
$ScriptsDir = Join-Path $ProjectRoot "scripts"
# Path configuration
$PID_DIR = Join-Path $ProjectRoot ".pids"
$LOG_DIR = Join-Path $ProjectRoot "backend\logs"
function Ensure-Directories {
if (!(Test-Path $PID_DIR)) { New-Item -ItemType Directory -Path $PID_DIR -Force | Out-Null }
if (!(Test-Path $LOG_DIR)) { New-Item -ItemType Directory -Path $LOG_DIR -Force | Out-Null }
}
function Run-Script {
param([string]$ScriptName)
$scriptPath = Join-Path $ScriptsDir "$ScriptName.ps1"
if (Test-Path $scriptPath) {
& $scriptPath $ENV
} else {
# fallback to bash if ps1 doesn't exist
$bashPath = Join-Path $ScriptsDir "$ScriptName.sh"
if (Test-Path $bashPath) {
bash $bashPath $ENV
} else {
Write-Host "[ERROR] Script not found: $ScriptName"
exit 1
}
}
}
switch ($Target.ToLower()) {
"help" {
Write-Host ""
Write-Host "========================================"
Write-Host " PIS Project Startup Script (ENV=$ENV)"
Write-Host "========================================"
Write-Host ""
Write-Host " Startup Commands:"
Write-Host " .\make.ps1 dev Start dev environment (frontend+backend+Celery)"
Write-Host " .\make.ps1 dev-backend Start backend only"
Write-Host " .\make.ps1 dev-frontend Start frontend only"
Write-Host " .\make.ps1 dev-celery Start Celery only"
Write-Host ""
Write-Host " Stop/Restart:"
Write-Host " .\make.ps1 stop Stop all services"
Write-Host " .\make.ps1 restart Restart all services"
Write-Host " .\make.ps1 restart-celery Restart Celery"
Write-Host ""
Write-Host " View Logs:"
Write-Host " .\make.ps1 logs View all logs"
Write-Host " .\make.ps1 logs-backend View backend logs"
Write-Host " .\make.ps1 logs-frontend View frontend logs"
Write-Host " .\make.ps1 logs-celery View Celery logs"
Write-Host ""
Write-Host " Status:"
Write-Host " .\make.ps1 status Check service status"
Write-Host ""
Write-Host " Environment:"
Write-Host " .\make.ps1 -ENV prod dev Use production environment"
Write-Host ""
Write-Host "========================================"
}
"dev" {
Ensure-Directories
Write-Host "========================================"
Write-Host " Starting Dev Environment (ENV=$ENV)"
Write-Host "========================================"
Write-Host ""
Write-Host " Backend: http://localhost:8000"
Write-Host " Frontend: http://localhost:8080"
Write-Host " Celery: Worker + Beat"
Write-Host ""
Run-Script "start-backend"
Run-Script "start-frontend"
Run-Script "start-celery"
}
"dev-backend" {
Ensure-Directories
Write-Host "Starting backend service (ENV=$ENV)..."
Run-Script "start-backend"
}
"dev-frontend" {
Write-Host "Starting frontend service (ENV=$ENV)..."
Run-Script "start-frontend"
}
"dev-celery" {
Ensure-Directories
Write-Host "Starting Celery (ENV=$ENV)..."
Run-Script "start-celery"
}
"stop" {
Write-Host "Stopping all services..."
Run-Script "stop-all"
Write-Host "All services stopped"
}
"restart" {
Write-Host "Restarting all services..."
Run-Script "stop-all"
Start-Sleep -Seconds 2
Ensure-Directories
Run-Script "start-backend"
Run-Script "start-frontend"
Run-Script "start-celery"
}
"restart-celery" {
Run-Script "stop-celery"
Start-Sleep -Seconds 1
Ensure-Directories
Run-Script "start-celery"
}
"logs" {
Write-Host "========================================"
Write-Host " Viewing All Logs (Ctrl+C to exit)"
Write-Host "========================================"
Run-Script "view-logs"
}
"logs-backend" {
Write-Host "========================================"
Write-Host " Viewing Backend Logs (Ctrl+C to exit)"
Write-Host "========================================"
& (Join-Path $ScriptsDir "view-logs.ps1") backend
}
"logs-frontend" {
Write-Host "========================================"
Write-Host " Viewing Frontend Logs (Ctrl+C to exit)"
Write-Host "========================================"
& (Join-Path $ScriptsDir "view-logs.ps1") frontend
}
"logs-celery" {
Write-Host "========================================"
Write-Host " Viewing Celery Logs (Ctrl+C to exit)"
Write-Host "========================================"
& (Join-Path $ScriptsDir "view-logs.ps1") celery
}
"status" {
Write-Host "========================================"
Write-Host " Service Status Check"
Write-Host "========================================"
Run-Script "check-status"
}
"clean-logs" {
Write-Host "Cleaning log files..."
if (Test-Path $LOG_DIR) {
Get-ChildItem $LOG_DIR -Filter "*.log" | Remove-Item -Force -ErrorAction SilentlyContinue
}
Write-Host "Logs cleaned"
}
"clean-pids" {
Write-Host "Cleaning PID files..."
if (Test-Path $PID_DIR) {
Get-ChildItem $PID_DIR -Filter "*.pid" | Remove-Item -Force -ErrorAction SilentlyContinue
}
Write-Host "PID files cleaned"
}
default {
Write-Host "[ERROR] Unknown command: $Target"
Write-Host "Run '.\make.ps1 help' to see available commands"
exit 1
}
}
exit 0