.github/scripts/Validate-Module.ps1
# Quick module validation script Write-Host "`n=== OfficeScrubC2R Module Validation ===" -ForegroundColor Cyan $results = @{} # Test manifest try { $manifest = Test-ModuleManifest -Path .\OfficeScrubC2R.psd1 -ErrorAction Stop $results['Manifest'] = "PASS (v$($manifest.Version))" } catch { $results['Manifest'] = "FAIL: $_" } # Test DLL if (Test-Path .\OfficeScrubNative.dll) { $results['DLL'] = "PASS" } else { $results['DLL'] = "FAIL: Not found" } # Test module import try { Import-Module .\OfficeScrubC2R.psd1 -Force -ErrorAction Stop $results['Import'] = "PASS" # Test commands $commands = Get-Command -Module OfficeScrubC2R $results['Commands'] = "PASS ($($commands.Count) exported)" # Test aliases $aliases = Get-Alias | Where-Object { $_.ModuleName -eq 'OfficeScrubC2R' } $results['Aliases'] = "PASS ($($aliases.Count) aliases)" } catch { $results['Import'] = "FAIL: $_" $results['Commands'] = "SKIP" $results['Aliases'] = "SKIP" } # Test required files $requiredFiles = @('LICENSE', 'README.md', 'CHANGELOG.md', 'CONTRIBUTING.md') $missingFiles = @() foreach ($file in $requiredFiles) { if (-not (Test-Path $file)) { $missingFiles += $file } } if ($missingFiles.Count -eq 0) { $results['Required Files'] = "PASS" } else { $results['Required Files'] = "FAIL: Missing $($missingFiles -join ', ')" } # Test help try { $help = Get-Help Invoke-OfficeScrubC2R -ErrorAction Stop if ($help.Synopsis) { $results['Help'] = "PASS" } else { $results['Help'] = "FAIL: No synopsis" } } catch { $results['Help'] = "FAIL: $_" } # Display results Write-Host "" $maxKeyLength = ($results.Keys | Measure-Object -Property Length -Maximum).Maximum foreach ($key in $results.Keys | Sort-Object) { $value = $results[$key] $color = if ($value -like "PASS*") { 'Green' } elseif ($value -like "FAIL*") { 'Red' } else { 'Yellow' } Write-Host ("{0,-$($maxKeyLength + 2)}: {1}" -f $key, $value) -ForegroundColor $color } # Summary $passed = ($results.Values | Where-Object { $_ -like "PASS*" }).Count $total = $results.Count Write-Host "`n=== Summary: $passed/$total checks passed ===" -ForegroundColor $(if ($passed -eq $total) { 'Green' } else { 'Yellow' }) if ($passed -eq $total) { Write-Host "`nModule is ready for publication!" -ForegroundColor Green } else { Write-Host "`nSome checks failed. Review above." -ForegroundColor Yellow } |