Skip to content

Commit 08d6fd5

Browse files
committed
chore: ✨ Update build tasks and add cspell configuration
* Refactored build tasks to use `$PSBPreference.TaskDependencies`. * Introduced `cspell.json` for spell checking configuration. * Updated `CHANGELOG.md` to reflect changes in task dependencies. * Adjusted formatting in several scripts for consistency.
1 parent 80605db commit 08d6fd5

File tree

8 files changed

+144
-112
lines changed

8 files changed

+144
-112
lines changed

Diff for: CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
77

88
## Unreleased
99

10+
- Loose dependencies by allowing them to be overwritten with $PSBPreference.
1011
- [**#71**](https://github.com/psake/PowerShellBuild/pull/71) Compiled modules
1112
are now explicitly created as UTF-8 files.
1213

13-
1414
## [0.6.2] 2024-10-06
1515

1616
### Changed

Diff for: PowerShellBuild/build.properties.ps1

+18-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
# spell-checker:ignore PSGALLERY BHPS MAML
12
BuildHelpers\Set-BuildEnvironment -Force
23

3-
$outDir = [IO.Path]::Combine($env:BHProjectPath, 'Output')
4+
$outDir = [IO.Path]::Combine($env:BHProjectPath, 'Output')
45
$moduleVersion = (Import-PowerShellDataFile -Path $env:BHPSModuleManifest).ModuleVersion
56

67
[ordered]@{
@@ -22,7 +23,7 @@ $moduleVersion = (Import-PowerShellDataFile -Path $env:BHPSModuleManifest).Modul
2223
}
2324
Build = @{
2425

25-
Dependencies = @('StageFiles', 'BuildHelp')
26+
# "Dependencies" moved to TaskDependencies section
2627

2728
# Output directory when building a module
2829
OutDir = $outDir
@@ -97,8 +98,8 @@ $moduleVersion = (Import-PowerShellDataFile -Path $env:BHPSModuleManifest).Modul
9798
OutputFileFormat = 'JaCoCo'
9899
}
99100
}
100-
Help = @{
101-
# Path to updateable help CAB
101+
Help = @{
102+
# Path to updatable help CAB
102103
UpdatableHelpOutDir = [IO.Path]::Combine($outDir, 'UpdatableHelp')
103104

104105
# Default Locale used for help generation, defaults to en-US
@@ -122,6 +123,19 @@ $moduleVersion = (Import-PowerShellDataFile -Path $env:BHPSModuleManifest).Modul
122123
# Credential to authenticate to PowerShell repository with
123124
PSRepositoryCredential = $null
124125
}
126+
TaskDependencies = @{
127+
Clean = @('Init')
128+
StageFiles = @('Clean')
129+
Build = @('StageFiles', 'BuildHelp')
130+
Analyze = @('Build')
131+
Pester = @('Build')
132+
Test = @('Pester', 'Analyze')
133+
BuildHelp = @('GenerateMarkdown', 'GenerateMAML')
134+
GenerateMarkdown = @('StageFiles')
135+
GenerateMAML = @('GenerateMarkdown')
136+
GenerateUpdatableHelp = @('BuildHelp')
137+
Publish = @('Test')
138+
}
125139
}
126140

127141
# Enable/disable generation of a catalog (.cat) file for the module.

Diff for: PowerShellBuild/psakeFile.ps1

+39-39
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Remove-Variable -Name PSBPreference -Scope Script -Force -ErrorAction Ignore
44
Set-Variable -Name PSBPreference -Option ReadOnly -Scope Script -Value (. ([IO.Path]::Combine($PSScriptRoot, 'build.properties.ps1')))
55

6-
properties {}
6+
Properties {}
77

88
FormatTaskName {
99
param($taskName)
@@ -15,24 +15,24 @@ FormatTaskName {
1515
# Can't have two 'default' tasks
1616
# Task default -depends Test
1717

18-
task Init {
18+
Task Init {
1919
Initialize-PSBuild -UseBuildHelpers -BuildEnvironment $PSBPreference
2020
} -description 'Initialize build environment variables'
2121

22-
task Clean -depends Init {
22+
Task Clean -depends $PSBPreference.TaskDependencies.Clean {
2323
Clear-PSBuildOutputFolder -Path $PSBPreference.Build.ModuleOutDir
2424
} -description 'Clears module output directory'
2525

26-
task StageFiles -depends Clean {
26+
Task StageFiles -depends $PSBPreference.TaskDependencies.StageFiles {
2727
$buildParams = @{
28-
Path = $PSBPreference.General.SrcRootDir
29-
ModuleName = $PSBPreference.General.ModuleName
30-
DestinationPath = $PSBPreference.Build.ModuleOutDir
31-
Exclude = $PSBPreference.Build.Exclude
32-
Compile = $PSBPreference.Build.CompileModule
33-
CompileDirectories = $PSBPreference.Build.CompileDirectories
34-
CopyDirectories = $PSBPreference.Build.CopyDirectories
35-
Culture = $PSBPreference.Help.DefaultLocale
28+
Path = $PSBPreference.General.SrcRootDir
29+
ModuleName = $PSBPreference.General.ModuleName
30+
DestinationPath = $PSBPreference.Build.ModuleOutDir
31+
Exclude = $PSBPreference.Build.Exclude
32+
Compile = $PSBPreference.Build.CompileModule
33+
CompileDirectories = $PSBPreference.Build.CompileDirectories
34+
CopyDirectories = $PSBPreference.Build.CopyDirectories
35+
Culture = $PSBPreference.Help.DefaultLocale
3636
}
3737

3838
if ($PSBPreference.Help.ConvertReadMeToAboutHelp) {
@@ -53,7 +53,7 @@ task StageFiles -depends Clean {
5353
Build-PSBuildModule @buildParams
5454
} -description 'Builds module based on source directory'
5555

56-
task Build -depends $PSBPreference.Build.Dependencies -description 'Builds module and generate help documentation'
56+
Task Build -depends $PSBPreference.TaskDependencies.Build -description 'Builds module and generate help documentation'
5757

5858
$analyzePreReqs = {
5959
$result = $true
@@ -67,11 +67,11 @@ $analyzePreReqs = {
6767
}
6868
$result
6969
}
70-
task Analyze -depends Build -precondition $analyzePreReqs {
70+
Task Analyze -depends $PSBPreference.TaskDependencies.Analyze -precondition $analyzePreReqs {
7171
$analyzeParams = @{
72-
Path = $PSBPreference.Build.ModuleOutDir
72+
Path = $PSBPreference.Build.ModuleOutDir
7373
SeverityThreshold = $PSBPreference.Test.ScriptAnalysis.FailBuildOnSeverityLevel
74-
SettingsPath = $PSBPreference.Test.ScriptAnalysis.SettingsPath
74+
SettingsPath = $PSBPreference.Test.ScriptAnalysis.SettingsPath
7575
}
7676
Test-PSBuildScriptAnalysis @analyzeParams
7777
} -description 'Execute PSScriptAnalyzer tests'
@@ -92,27 +92,27 @@ $pesterPreReqs = {
9292
}
9393
return $result
9494
}
95-
task Pester -depends Build -precondition $pesterPreReqs {
95+
Task Pester -depends $PSBPreference.TaskDependencies.Pester -precondition $pesterPreReqs {
9696
$pesterParams = @{
97-
Path = $PSBPreference.Test.RootDir
98-
ModuleName = $PSBPreference.General.ModuleName
99-
ModuleManifest = Join-Path $PSBPreference.Build.ModuleOutDir "$($PSBPreference.General.ModuleName).psd1"
100-
OutputPath = $PSBPreference.Test.OutputFile
101-
OutputFormat = $PSBPreference.Test.OutputFormat
102-
CodeCoverage = $PSBPreference.Test.CodeCoverage.Enabled
103-
CodeCoverageThreshold = $PSBPreference.Test.CodeCoverage.Threshold
104-
CodeCoverageFiles = $PSBPreference.Test.CodeCoverage.Files
105-
CodeCoverageOutputFile = $PSBPreference.Test.CodeCoverage.OutputFile
97+
Path = $PSBPreference.Test.RootDir
98+
ModuleName = $PSBPreference.General.ModuleName
99+
ModuleManifest = Join-Path $PSBPreference.Build.ModuleOutDir "$($PSBPreference.General.ModuleName).psd1"
100+
OutputPath = $PSBPreference.Test.OutputFile
101+
OutputFormat = $PSBPreference.Test.OutputFormat
102+
CodeCoverage = $PSBPreference.Test.CodeCoverage.Enabled
103+
CodeCoverageThreshold = $PSBPreference.Test.CodeCoverage.Threshold
104+
CodeCoverageFiles = $PSBPreference.Test.CodeCoverage.Files
105+
CodeCoverageOutputFile = $PSBPreference.Test.CodeCoverage.OutputFile
106106
CodeCoverageOutputFileFormat = $PSBPreference.Test.CodeCoverage.OutputFileFormat
107-
ImportModule = $PSBPreference.Test.ImportModule
107+
ImportModule = $PSBPreference.Test.ImportModule
108108
}
109109
Test-PSBuildPester @pesterParams
110110
} -description 'Execute Pester tests'
111111

112-
task Test -depends Pester, Analyze {
112+
Task Test -depends $PSBPreference.TaskDependencies.Test {
113113
} -description 'Execute Pester and ScriptAnalyzer tests'
114114

115-
task BuildHelp -depends GenerateMarkdown, GenerateMAML {} -description 'Builds help documentation'
115+
Task BuildHelp -depends $PSBPreference.TaskDependencies.BuildHelp {} -description 'Builds help documentation'
116116

117117
$genMarkdownPreReqs = {
118118
$result = $true
@@ -122,12 +122,12 @@ $genMarkdownPreReqs = {
122122
}
123123
$result
124124
}
125-
task GenerateMarkdown -depends StageFiles -precondition $genMarkdownPreReqs {
125+
Task GenerateMarkdown -depends $PSBPreference.TaskDependencies.GenerateMarkdown -precondition $genMarkdownPreReqs {
126126
$buildMDParams = @{
127127
ModulePath = $PSBPreference.Build.ModuleOutDir
128128
ModuleName = $PSBPreference.General.ModuleName
129-
DocsPath = $PSBPreference.Docs.RootDir
130-
Locale = $PSBPreference.Help.DefaultLocale
129+
DocsPath = $PSBPreference.Docs.RootDir
130+
Locale = $PSBPreference.Help.DefaultLocale
131131
}
132132
Build-PSBuildMarkdown @buildMDParams
133133
} -description 'Generates PlatyPS markdown files from module help'
@@ -140,7 +140,7 @@ $genHelpFilesPreReqs = {
140140
}
141141
$result
142142
}
143-
task GenerateMAML -depends GenerateMarkdown -precondition $genHelpFilesPreReqs {
143+
Task GenerateMAML -depends $PSBPreference.TaskDependencies.GenerateMAML -precondition $genHelpFilesPreReqs {
144144
Build-PSBuildMAMLHelp -Path $PSBPreference.Docs.RootDir -DestinationPath $PSBPreference.Build.ModuleOutDir
145145
} -description 'Generates MAML-based help from PlatyPS markdown files'
146146

@@ -152,18 +152,18 @@ $genUpdatableHelpPreReqs = {
152152
}
153153
$result
154154
}
155-
task GenerateUpdatableHelp -depends BuildHelp -precondition $genUpdatableHelpPreReqs {
155+
Task GenerateUpdatableHelp -depends $PSBPreference.TaskDependencies.GenerateUpdatableHelp -precondition $genUpdatableHelpPreReqs {
156156
Build-PSBuildUpdatableHelp -DocsPath $PSBPreference.Docs.RootDir -OutputPath $PSBPreference.Help.UpdatableHelpOutDir
157157
} -description 'Create updatable help .cab file based on PlatyPS markdown help'
158158

159-
task Publish -depends Test {
159+
Task Publish -depends $PSBPreference.TaskDependencies.Publish {
160160
Assert -conditionToCheck ($PSBPreference.Publish.PSRepositoryApiKey -or $PSBPreference.Publish.PSRepositoryCredential) -failureMessage "API key or credential not defined to authenticate with [$($PSBPreference.Publish.PSRepository)] with."
161161

162162
$publishParams = @{
163-
Path = $PSBPreference.Build.ModuleOutDir
164-
Version = $PSBPreference.General.ModuleVersion
163+
Path = $PSBPreference.Build.ModuleOutDir
164+
Version = $PSBPreference.General.ModuleVersion
165165
Repository = $PSBPreference.Publish.PSRepository
166-
Verbose = $VerbosePreference
166+
Verbose = $VerbosePreference
167167
}
168168
if ($PSBPreference.Publish.PSRepositoryApiKey) {
169169
$publishParams.ApiKey = $PSBPreference.Publish.PSRepositoryApiKey
@@ -176,7 +176,7 @@ task Publish -depends Test {
176176
Publish-PSBuildModule @publishParams
177177
} -description 'Publish module to the defined PowerShell repository'
178178

179-
task ? -description 'Lists the available tasks' {
179+
Task ? -description 'Lists the available tasks' {
180180
'Available tasks:'
181181
$psake.context.Peek().Tasks.Keys | Sort-Object
182182
}

Diff for: build.ps1

+16-17
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,22 @@ param(
33
# Build task(s) to execute
44
[parameter(ParameterSetName = 'task', position = 0)]
55
[ArgumentCompleter( {
6-
param($Command, $Parameter, $WordToComplete, $CommandAst, $FakeBoundParams)
7-
$psakeFile = './psakeFile.ps1'
8-
switch ($Parameter) {
9-
'Task' {
10-
if ([string]::IsNullOrEmpty($WordToComplete)) {
11-
Get-PSakeScriptTasks -buildFile $psakeFile | Select-Object -ExpandProperty Name
6+
param($Command, $Parameter, $WordToComplete, $CommandAst, $FakeBoundParams)
7+
$psakeFile = './psakeFile.ps1'
8+
switch ($Parameter) {
9+
'Task' {
10+
if ([string]::IsNullOrEmpty($WordToComplete)) {
11+
Get-PSakeScriptTasks -buildFile $psakeFile | Select-Object -ExpandProperty Name
12+
} else {
13+
Get-PSakeScriptTasks -buildFile $psakeFile |
14+
Where-Object { $_.Name -match $WordToComplete } |
15+
Select-Object -ExpandProperty Name
16+
}
1217
}
13-
else {
14-
Get-PSakeScriptTasks -buildFile $psakeFile |
15-
Where-Object { $_.Name -match $WordToComplete } |
16-
Select-Object -ExpandProperty Name
18+
default {
1719
}
1820
}
19-
Default {
20-
}
21-
}
22-
})]
21+
})]
2322
[string[]]$Task = 'default',
2423

2524
# Bootstrap dependencies
@@ -36,10 +35,10 @@ $ErrorActionPreference = 'Stop'
3635

3736
# Bootstrap dependencies
3837
if ($Bootstrap.IsPresent) {
39-
Get-PackageProvider -Name Nuget -ForceBootstrap | Out-Null
38+
PackageManagement\Get-PackageProvider -Name Nuget -ForceBootstrap | Out-Null
4039
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
4140
if (-not (Get-Module -Name PSDepend -ListAvailable)) {
42-
Install-module -Name PSDepend -Repository PSGallery
41+
Install-Module -Name PSDepend -Repository PSGallery
4342
}
4443
Import-Module -Name PSDepend -Verbose:$false
4544
Invoke-PSDepend -Path './requirements.psd1' -Install -Import -Force -WarningAction SilentlyContinue
@@ -48,7 +47,7 @@ if ($Bootstrap.IsPresent) {
4847
# Execute psake task(s)
4948
$psakeFile = './psakeFile.ps1'
5049
if ($PSCmdlet.ParameterSetName -eq 'Help') {
51-
Get-PSakeScriptTasks -buildFile $psakeFile |
50+
Get-PSakeScriptTasks -buildFile $psakeFile |
5251
Format-Table -Property Name, Description, Alias, DependsOn
5352
} else {
5453
Set-BuildEnvironment -Force

Diff for: cspell.json

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"version": "0.2",
3+
"ignorePaths": [],
4+
"dictionaryDefinitions": [],
5+
"dictionaries": [
6+
"powershell",
7+
"csharp",
8+
"json",
9+
"xml",
10+
"markdown"
11+
],
12+
"words": [],
13+
"ignoreWords": [
14+
"psake",
15+
"MAML"
16+
],
17+
"import": []
18+
}

Diff for: requirements.psd1

+6-6
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22
PSDependOptions = @{
33
Target = 'CurrentUser'
44
}
5-
BuildHelpers = '2.0.16'
6-
Pester = @{
5+
BuildHelpers = '2.0.16'
6+
Pester = @{
77
MinimumVersion = '5.6.1'
88
Parameters = @{
99
SkipPublisherCheck = $true
1010
}
1111
}
12-
psake = '4.9.0'
13-
PSScriptAnalyzer = '1.19.1'
14-
InvokeBuild = '5.8.1'
15-
platyPS = '0.14.2'
12+
psake = '4.9.0'
13+
PSScriptAnalyzer = '1.24.0'
14+
InvokeBuild = '5.8.1'
15+
platyPS = '0.14.2'
1616
}

Diff for: tests/TestModule/.build.ps1

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ Import-Module ../../Output/PowerShellBuild -Force
33

44
$PSBPreference.Build.CompileModule = $true
55

6-
task Build $PSBPreference.build.dependencies
6+
Task Build $PSBPreference.TaskDependencies.Build
77

8-
task . Build
8+
Task . Build

0 commit comments

Comments
 (0)