build.properties.ps1


#region Basic project settings

Set-BuildEnvironment -Force

# Root directory for the project
$projectRoot = $env:BHProjectPath

# Root directory for the module
$srcRootDir = $env:BHPSModulePath

# The name of the module. This should match the basename of the PSD1 file
$moduleName = $env:BHProjectName

# Module version
$moduleVersion = (Import-PowerShellDataFile -Path $env:BHPSModuleManifest).ModuleVersion

# Module manifest path
$moduleManifestPath = $env:BHPSModuleManifest

# Output directory when building a module
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
$outDir = Join-Path -Path $projectRoot -ChildPath Output

# Module output directory
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
$moduleOutDir = "$outDir/$moduleName/$moduleVersion"

# Controls whether to "compile" module into single PSM1 or not
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
$compileModule = $false

[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
$updatableHelpOutDir = Join-Path $OutDir UpdatableHelp

# Default Locale used for help generation, defaults to en-US
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
$defaultLocale = (Get-UICulture).Name

# Convert project readme into the module about file
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
$convertReadMeToAboutHelp = $false
#endregion

#region Script Analysis

# Enable/disable use of PSScriptAnalyzer to perform script analysis
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
$scriptAnalysisEnabled = $true

# When PSScriptAnalyzer is enabled, control which severity level will generate a build failure.
# Valid values are Error, Warning, Information and None. "None" will report errors but will not
# cause a build failure. "Error" will fail the build only on diagnostic records that are of
# severity error. "Warning" will fail the build on Warning and Error diagnostic records.
# "Any" will fail the build on any diagnostic record, regardless of severity.
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
[ValidateSet('Error', 'Warning', 'Any', 'None')]
$scriptAnalysisFailBuildOnSeverityLevel = 'Error'

# Path to the PSScriptAnalyzer settings file.
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
$scriptAnalyzerSettingsPath = Join-Path $PSScriptRoot -ChildPath ScriptAnalyzerSettings.psd1
#endregion

#region File catalog

# Enable/disable generation of a catalog (.cat) file for the module.
# [System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
# $catalogGenerationEnabled = $true

# # Select the hash version to use for the catalog file: 1 for SHA1 (compat with Windows 7 and
# # Windows Server 2008 R2), 2 for SHA2 to support only newer Windows versions.
# [System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
# $catalogVersion = 2
#endregion

#region Testing

# Enable/disable Pester tests
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
$testingEnabled = $true

# Directory containing Pester tests
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
$testRootDir = Join-Path -Path $projectRoot -ChildPath tests

# Enable/disable Pester code coverage reporting.
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
$codeCoverageEnabled = $false

# Fail Pester code coverage test if below this threshold
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
$codeCoverageThreshold = .75

# CodeCoverageFiles specifies the files to perform code coverage analysis on. This property
# acts as a direct input to the Pester -CodeCoverage parameter, so will support constructions
# like the ones found here: https://github.com/pester/Pester/wiki/Code-Coverage.
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
$codeCoverageFiles = @(
    Join-Path -Path $srcRootDir -ChildPath '*.ps1'
    Join-Path -Path $srcRootDir -ChildPath '*.psm1'
)

# Specifies an output file path to send to Invoke-Pester's -OutputFile parameter.
# This is typically used to write out test results so that they can be sent to a CI
# system like AppVeyor.
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
$testOutputFile = $null

# Specifies the test output format to use when the TestOutputFile property is given
# a path. This parameter is passed through to Invoke-Pester's -OutputFormat parameter.
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
$testOutputFormat = 'NUnitXml'
#endregion

#region Documentation
# Directory PlatyPS markdown documentation will be saved to
[System.Diagnostics.CodeAnalysis.SuppressMessage('PSUseDeclaredVarsMoreThanAssigments', '')]
$docsRootDir = Join-Path -Path $projectRoot -ChildPath 'docs'

#endregion

#region Publishing

# PowerShell repository name to publish modules to
$psRepository = 'PSGallery'

# API key to authenticate to PowerShell repository with
$psRepositoryApiKey = $env:PSGALLERY_API_KEY

# Credential to authenticate to PowerShell repository with
$psRepositoryCredential = $null

#endregion