115 lines
3.7 KiB
PowerShell
115 lines
3.7 KiB
PowerShell
|
|
# 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
|
||
|
|
}
|