Files
PSProxmoxVE/generate-help.ps1
T
Clint Branham 4f04391e73 docs: add platyPS help generation and MAML XML
- generate-help.ps1 script to build markdown stubs and MAML XML
- 81 cmdlet markdown help files in docs/cmdlets/
- PSProxmoxVE.dll-Help.xml (898 KB) for Get-Help support
- PVE_API_COVERAGE.md documenting implemented and missing API areas
- .csproj updated to include help XML in build output
- HelpInfoUri added to module manifest

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 12:32:03 -05:00

80 lines
2.9 KiB
PowerShell

#!/usr/bin/env pwsh
<#
.SYNOPSIS
Generates platyPS markdown help stubs and MAML XML help for PSProxmoxVE.
.DESCRIPTION
This script:
1. Builds the module to publish/netstandard2.0/
2. Installs platyPS if needed
3. Generates markdown help stubs in docs/cmdlets/
4. Generates MAML XML help in publish/netstandard2.0/
5. Copies the MAML XML to src/PSProxmoxVE/ for inclusion in builds
.NOTES
Run from the repository root:
pwsh -NoProfile -File ./generate-help.ps1
#>
$ErrorActionPreference = 'Stop'
Set-StrictMode -Version Latest
$repoRoot = $PSScriptRoot
Push-Location $repoRoot
try {
# Step 1: Build the module
Write-Host "Building module..." -ForegroundColor Cyan
dotnet publish src/PSProxmoxVE/PSProxmoxVE.csproj --configuration Release --framework netstandard2.0 --output ./publish/netstandard2.0 | Out-Null
Remove-Item ./publish/netstandard2.0/*.deps.json, ./publish/netstandard2.0/*.runtimeconfig.json -ErrorAction SilentlyContinue
# Step 2: Install platyPS if needed
if (-not (Get-Module -ListAvailable -Name platyPS)) {
Write-Host "Installing platyPS..." -ForegroundColor Cyan
Install-Module platyPS -Force -Scope CurrentUser
}
# Step 3: Import modules
Write-Host "Importing modules..." -ForegroundColor Cyan
Import-Module platyPS -Force
Import-Module ./publish/netstandard2.0/PSProxmoxVE.psd1 -Force
# Step 4: Create output directory
$docsDir = Join-Path $repoRoot 'docs/cmdlets'
if (-not (Test-Path $docsDir)) {
New-Item -ItemType Directory -Path $docsDir -Force | Out-Null
}
# Step 5: Generate markdown help stubs
Write-Host "Generating markdown help stubs..." -ForegroundColor Cyan
New-MarkdownHelp -Module PSProxmoxVE -OutputFolder $docsDir -Force | Out-Null
$mdCount = (Get-ChildItem "$docsDir/*.md" | Measure-Object).Count
Write-Host " Generated $mdCount markdown files" -ForegroundColor Green
# Step 6: Generate MAML XML help
Write-Host "Generating MAML XML help..." -ForegroundColor Cyan
New-ExternalHelp -Path $docsDir -OutputPath ./publish/netstandard2.0/ -Force | Out-Null
# Step 7: Copy MAML XML to src directory for build inclusion
$mamlFiles = Get-ChildItem ./publish/netstandard2.0/*-Help.xml
foreach ($f in $mamlFiles) {
$dest = Join-Path 'src/PSProxmoxVE' $f.Name
Copy-Item $f.FullName $dest -Force
Write-Host " Copied $($f.Name) to src/PSProxmoxVE/" -ForegroundColor Green
}
# Step 8: Verify
Write-Host "`nVerification:" -ForegroundColor Cyan
Write-Host " Markdown files: $mdCount" -ForegroundColor Green
foreach ($f in $mamlFiles) {
$size = [math]::Round($f.Length / 1024, 1)
Write-Host " MAML XML: $($f.Name) (${size} KB)" -ForegroundColor Green
}
Write-Host "`nDone! Help generation complete." -ForegroundColor Green
}
finally {
Pop-Location
}