mirror of
https://github.com/community-scripts/ProxmoxVED.git
synced 2026-02-24 21:47:26 +00:00
add missing headers and add windows version of app headers
This commit is contained in:
90
.github/workflows/scripts/generate-app-headers.ps1
generated
vendored
Normal file
90
.github/workflows/scripts/generate-app-headers.ps1
generated
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env pwsh
|
||||
|
||||
# Function for generating Figlet headers
|
||||
function Generate-Headers {
|
||||
param (
|
||||
[string]$BaseDir,
|
||||
[string]$TargetSubdir,
|
||||
[string]$SearchPattern
|
||||
)
|
||||
|
||||
$HeadersDir = Join-Path $BaseDir $TargetSubdir
|
||||
|
||||
# Create headers directory if it doesn't exist
|
||||
if (-not (Test-Path $HeadersDir)) {
|
||||
New-Item -ItemType Directory -Path $HeadersDir -Force | Out-Null
|
||||
}
|
||||
|
||||
# Remove existing header files
|
||||
Get-ChildItem -Path $HeadersDir -File | Remove-Item -Force
|
||||
|
||||
# Determine search scope (recursive or not)
|
||||
if ($SearchPattern -eq "**") {
|
||||
$FileList = Get-ChildItem -Path $BaseDir -Filter "*.sh" -Recurse -File
|
||||
}
|
||||
else {
|
||||
$FileList = Get-ChildItem -Path $BaseDir -Filter "*.sh" -File
|
||||
}
|
||||
|
||||
foreach ($Script in $FileList) {
|
||||
# Extract APP name from script
|
||||
$Content = Get-Content $Script.FullName -Raw
|
||||
if ($Content -match 'APP="([^"]+)"') {
|
||||
$AppName = $Matches[1]
|
||||
|
||||
$OutputFile = Join-Path $HeadersDir $Script.BaseName
|
||||
|
||||
# Generate figlet output
|
||||
try {
|
||||
$FigletOutput = & figlet -w 500 -f slant $AppName 2>&1
|
||||
|
||||
if ($LASTEXITCODE -eq 0 -and $FigletOutput) {
|
||||
$FigletOutput | Out-File -FilePath $OutputFile -Encoding utf8 -NoNewline
|
||||
Write-Host "Generated: $OutputFile" -ForegroundColor Green
|
||||
}
|
||||
else {
|
||||
Write-Host "Figlet failed for $AppName in $($Script.Name)" -ForegroundColor Yellow
|
||||
}
|
||||
}
|
||||
catch {
|
||||
Write-Host "Error running figlet for $AppName : $_" -ForegroundColor Red
|
||||
}
|
||||
}
|
||||
else {
|
||||
Write-Host "No APP name found in $($Script.Name), skipping." -ForegroundColor Gray
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Check if figlet is available
|
||||
try {
|
||||
$null = Get-Command figlet -ErrorAction Stop
|
||||
}
|
||||
catch {
|
||||
Write-Host "Error: figlet is not installed or not in PATH" -ForegroundColor Red
|
||||
Write-Host "`nInstallation options:" -ForegroundColor Yellow
|
||||
Write-Host "1. Using Scoop (recommended):" -ForegroundColor Cyan
|
||||
Write-Host " scoop install figlet" -ForegroundColor White
|
||||
Write-Host "`n2. Manual download:" -ForegroundColor Cyan
|
||||
Write-Host " Download from: https://github.com/cmatsuoka/figlet/releases" -ForegroundColor White
|
||||
Write-Host " Extract and add to PATH" -ForegroundColor White
|
||||
Write-Host "`n3. Using WSL:" -ForegroundColor Cyan
|
||||
Write-Host " Run the bash version: bash generate-app-headers.sh" -ForegroundColor White
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Change to script directory
|
||||
$ScriptDir = Split-Path -Parent $PSCommandPath
|
||||
$RepoRoot = Split-Path -Parent (Split-Path -Parent (Split-Path -Parent $ScriptDir))
|
||||
Set-Location $RepoRoot
|
||||
|
||||
Write-Host "Processing ct/ directory..." -ForegroundColor Cyan
|
||||
Generate-Headers -BaseDir ".\ct" -TargetSubdir "headers" -SearchPattern "*"
|
||||
|
||||
Write-Host "`nProcessing tools/ directory..." -ForegroundColor Cyan
|
||||
Generate-Headers -BaseDir ".\tools" -TargetSubdir "headers" -SearchPattern "**"
|
||||
|
||||
Write-Host "`nProcessing vm/ directory..." -ForegroundColor Cyan
|
||||
Generate-Headers -BaseDir ".\vm" -TargetSubdir "headers" -SearchPattern "*"
|
||||
|
||||
Write-Host "`nCompleted processing all sections." -ForegroundColor Green
|
||||
Reference in New Issue
Block a user