template/psakeFile.ps1

properties {
    # PowerShellBuild's bundled BuildHelpers does not discover manifests at
    # src/<ModuleName>/<ModuleName>.psd1, so restore the exact module settings
    # seeded by build.ps1 after PowerShellBuild initializes its defaults.
    $moduleManifestPath = $env:BHPSModuleManifest
    $moduleSourcePath = Split-Path -Path $moduleManifestPath -Parent
    $moduleName = [System.IO.Path]::GetFileNameWithoutExtension($moduleManifestPath)
    $PSBPreference.General.SrcRootDir = $moduleSourcePath
    $PSBPreference.General.ModuleManifestPath = $moduleManifestPath
    $PSBPreference.General.ModuleName = $moduleName
    $env:BHPSModulePath = $moduleSourcePath
    $env:BHModulePath = $moduleSourcePath
    $env:BHProjectName = $moduleName

    # Set this to $true to create a module with a monolithic PSM1
    $PSBPreference.Build.CompileModule = $false
    $PSBPreference.Help.DefaultLocale = 'en-US'
    $PSBPreference.Test.OutputFile = 'out/testResults.xml'
}

# Run static analysis before Pester initializes its test runspaces. This avoids
# a PSScriptAnalyzer null-reference failure observed after Pester on PowerShell 7.6.4.
$PSBTestDependency = @('Analyze', 'Pester')
$PSBStageFilesDependency = @('RestoreNestedModuleBuildEnvironment')

task RestoreNestedModuleBuildEnvironment -depends Clean {
    # Initialize-PSBuild calls BuildHelpers once more. Restore the nested src
    # values before any task stages, tests, or publishes the module.
    $env:BHProjectName = $PSBPreference.General.ModuleName
    $env:BHModulePath = $PSBPreference.General.SrcRootDir
    $env:BHPSModulePath = $PSBPreference.General.SrcRootDir
    $env:BHPSModuleManifest = $PSBPreference.General.ModuleManifestPath
}

task Default -depends Test

task Test -FromModule PowerShellBuild -minimumVersion '0.8.2'

task Publish -FromModule PowerShellBuild -minimumVersion '0.8.2'