.github/scripts/prechecks.ps1

Write-Host "🔍 Running pre-publish checks..."

# Check for module manifest
$manifest = Get-ChildItem -Path . -Filter PS.M365UsageReport.psd1 -Recurse | Select-Object -First 1
if (-not $manifest) {
    Write-Error "❌ Module manifest not found. Expected 'PS.M365UsageReport.psd1'."
    exit 1
}

# Validate module version
$manifestData = Test-ModuleManifest -Path $manifest.FullName
$version = $manifestData.Version
if (-not $version -or $version -match "[^\d\.]") {
    Write-Error "❌ Invalid or missing version in manifest: $version"
    exit 1
}

# Check if version already exists on PowerShell Gallery
try {
    $existing = Find-Module -Name PS.M365UsageReport -Repository PSGallery -ErrorAction Stop
    if ($existing.Version -eq $version) {
        Write-Error "❌ Version $version of PS.M365UsageReport already exists on PowerShell Gallery. Update the version before publishing."
        exit 1
    }
}
catch {
    Write-Warning "⚠️ Could not check existing version on PSGallery: $_"
}

# Optional: enforce main branch
$branch = git rev-parse --abbrev-ref HEAD 2>$null
if ($branch -ne "main") {
    Write-Warning "⚠️ Current branch is '$branch'. Expected 'main'."
    # Uncomment to enforce:
    # exit 1
}

Write-Host "✅ Pre-checks passed. Ready to publish PS.M365UsageReport v$version"