Files
oneapp_docs/build-docs.ps1

115 lines
3.7 KiB
PowerShell
Raw Normal View History

2025-09-24 14:08:54 +08:00
# OneApp Documentation Build Script
param(
[switch]$KeepDocs = $false,
[switch]$Help = $false
)
if ($Help) {
Write-Host "OneApp Documentation Build Script" -ForegroundColor Green
Write-Host ""
Write-Host "Usage:"
Write-Host " .\build-docs.ps1 # Build docs and cleanup"
Write-Host " .\build-docs.ps1 -KeepDocs # Build but keep docs"
Write-Host " .\build-docs.ps1 -Help # Show help"
exit 0
}
$ErrorActionPreference = "Stop"
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$RootDir = $ScriptDir
$DocsDir = Join-Path $RootDir "docs"
$SiteDir = Join-Path $RootDir "site"
Write-Host "=== OneApp Documentation Build Start ===" -ForegroundColor Green
Write-Host "Root: $RootDir"
Write-Host "Docs: $DocsDir"
Write-Host "Site: $SiteDir"
Write-Host ""
try {
Write-Host "Step 1/4: Preparing docs directory..." -ForegroundColor Yellow
if (Test-Path $DocsDir) {
Remove-Item $DocsDir -Recurse -Force
}
New-Item -Path $DocsDir -ItemType Directory -Force | Out-Null
Write-Host "docs directory created" -ForegroundColor Green
Write-Host ""
Write-Host "Step 2/4: Copying source files..." -ForegroundColor Yellow
# Copy markdown files
Get-ChildItem -Path $RootDir -Filter "*.md" | ForEach-Object {
Copy-Item $_.FullName -Destination (Join-Path $DocsDir $_.Name) -Force
Write-Host "Copied: $($_.Name)" -ForegroundColor Gray
}
# Copy directories
$Folders = @("account", "after_sales", "app_car", "basic_uis", "basic_utils",
"car_sales", "community", "membership", "service_component",
"setting", "touch_point", "images", "assets")
foreach ($Folder in $Folders) {
$SourcePath = Join-Path $RootDir $Folder
if (Test-Path $SourcePath) {
Copy-Item $SourcePath -Destination (Join-Path $DocsDir $Folder) -Recurse -Force
Write-Host "Copied folder: $Folder" -ForegroundColor Gray
}
}
Write-Host "File copy completed" -ForegroundColor Green
Write-Host ""
Write-Host "Step 3/4: Building MkDocs..." -ForegroundColor Yellow
try {
$null = Get-Command "python" -ErrorAction Stop
Write-Host "Python found"
} catch {
throw "Python not found. Please install Python first."
}
Write-Host "Running: python -m mkdocs build --clean"
& python -m mkdocs build --clean
if ($LASTEXITCODE -eq 0) {
Write-Host "Build successful!" -ForegroundColor Green
if (Test-Path $SiteDir) {
$Files = Get-ChildItem $SiteDir -Recurse -File
$Size = [math]::Round(($Files | Measure-Object Length -Sum).Sum / 1MB, 2)
Write-Host "Files: $($Files.Count), Size: $Size MB"
}
} else {
throw "Build failed with exit code: $LASTEXITCODE"
}
Write-Host ""
Write-Host "Step 4/4: Cleanup..." -ForegroundColor Yellow
if ($KeepDocs) {
Write-Host "Keeping docs directory" -ForegroundColor Cyan
} else {
if (Test-Path $DocsDir) {
Remove-Item $DocsDir -Recurse -Force
Write-Host "docs directory cleaned" -ForegroundColor Green
}
}
Write-Host ""
Write-Host "=== Build Completed ===" -ForegroundColor Green
Write-Host "Site: $SiteDir" -ForegroundColor Green
Write-Host "Open: site/index.html" -ForegroundColor Cyan
} catch {
Write-Host ""
Write-Host "=== Build Failed ===" -ForegroundColor Red
Write-Host "Error: $($_.Exception.Message)" -ForegroundColor Red
if ((Test-Path $DocsDir) -and (-not $KeepDocs)) {
Remove-Item $DocsDir -Recurse -Force -ErrorAction SilentlyContinue
}
exit 1
}