Skip to content

Commit f3f3184

Browse files
authored
Merge pull request #435 from PowerShellOrg/FixHelp
2 parents 88eadb7 + 2bf5b5f commit f3f3184

28 files changed

+579
-131
lines changed

.markdownlint.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"MD024": {
3+
"siblings_only": true
4+
}
5+
}

.vscode/settings.json

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,19 @@
22
//-------- Files configuration --------
33
// When enabled, will trim trailing whitespace when you save a file.
44
"files.trimTrailingWhitespace": true,
5+
"files.insertFinalNewline": true,
6+
"editor.insertSpaces": true,
7+
// -------- Search configuration --------
8+
// Exclude the Output folder from search results.
59
"search.exclude": {
6-
"Release": true,
7-
"Output": true,
10+
"Output/**": true,
811
},
9-
"editor.tabSize": 4,
1012
//-------- PowerShell Configuration --------
1113
// Use a custom PowerShell Script Analyzer settings file for this workspace.
1214
// Relative paths for this setting are always relative to the workspace root dir.
1315
"powershell.scriptAnalysis.settingsPath": "ScriptAnalyzerSettings.psd1",
1416
//----------Code Formatting ----------------
1517
"powershell.codeFormatting.preset": "OTBS",
16-
"editor.formatOnSave": true
18+
"editor.formatOnSave": true,
19+
"powershell.scriptAnalysis.enable": true
1720
}

CHANGELOG.md

Lines changed: 99 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,72 @@
1-
# Plaster Release History
1+
# Change Log
22

3-
## 2.0.0 - 2025-06-18
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](http://keepachangelog.com/)
6+
and this project adheres to [Semantic Versioning](http://semver.org/).
7+
8+
## [2.0.0] - 2025-06-18
49

510
### Major Release - Plaster 2.0
611

7-
This is a major release that modernizes Plaster for PowerShell 7.x while maintaining full backward compatibility with existing templates and workflows.
12+
This is a major release that modernizes Plaster for PowerShell 7.x while
13+
maintaining full backward compatibility with existing templates and workflows.
814

915
### BREAKING CHANGES
1016

1117
- **Minimum PowerShell Version**: Updated from 3.0 to 5.1
12-
- **Build System**: Replaced psake with modern InvokeBuild for better cross-platform support
1318
- **Test Framework**: Updated to Pester 5.x (breaking change for test authors)
14-
- **Default Encoding**: Changed from 'Default' to 'UTF8-NoBOM' for better cross-platform compatibility
19+
- **Default Encoding**: Changed from 'Default' to 'UTF8-NoBOM' for better
20+
cross-platform compatibility
1521

1622
### NEW FEATURES
1723

1824
#### PowerShell 7.x Full Support
25+
1926
- **Cross-Platform Compatibility**: Full support for Windows, Linux, and macOS
20-
- **PowerShell Core Optimization**: Improved performance and reliability on PowerShell 7.x
21-
- **Platform Detection**: Enhanced platform-specific functionality and path handling
27+
- **PowerShell Core Optimization**: Improved performance and reliability on
28+
PowerShell 7.x
29+
- **Platform Detection**: Enhanced platform-specific functionality and path
30+
handling
2231

2332
#### Modern Development Practices
24-
- **Enhanced Error Handling**: Comprehensive error handling with detailed logging
33+
34+
- **Enhanced Error Handling**: Comprehensive error handling with detailed
35+
logging
2536
- **Parameter Validation**: Modern PowerShell parameter validation attributes
26-
- **Type Safety**: Improved type safety using PowerShell classes and `using` statements
37+
- **Type Safety**: Improved type safety using PowerShell classes and `using`
38+
statements
2739
- **Logging System**: Built-in logging system with configurable levels
2840

2941
#### Build and Development
42+
3043
- **Modern Build System**: InvokeBuild-based build system replacing legacy psake
3144
- **Pester 5.x Support**: Updated test framework with modern Pester 5.x syntax
3245
- **Cross-Platform CI/CD**: GitHub Actions workflow supporting all platforms
33-
- **Code Coverage**: Integrated code coverage reporting with configurable thresholds
46+
- **Code Coverage**: Integrated code coverage reporting with configurable
47+
thresholds
3448
- **Static Analysis**: Enhanced PSScriptAnalyzer integration with modern rules
3549

3650
### IMPROVEMENTS
3751

3852
#### Performance
53+
3954
- **Faster Module Loading**: Optimized module loading and reduced startup time
4055
- **Memory Usage**: Improved memory usage and garbage collection
41-
- **Template Processing**: Enhanced template processing performance on large projects
56+
- **Template Processing**: Enhanced template processing performance on large
57+
projects
4258
- **Cross-Platform I/O**: Optimized file operations for different platforms
4359

4460
#### Developer Experience
45-
- **Better Error Messages**: More descriptive error messages with actionable guidance
61+
62+
- **Better Error Messages**: More descriptive error messages with actionable
63+
guidance
4664
- **Enhanced Debugging**: Improved debug output and verbose logging
4765
- **IntelliSense Support**: Better parameter completion and help text
4866
- **Modern PowerShell Features**: Leverages PowerShell 5.1+ and 7.x features
4967

5068
#### Cross-Platform Enhancements
69+
5170
- **Path Normalization**: Automatic path separator handling across platforms
5271
- **Encoding Handling**: Consistent UTF-8 encoding with BOM handling
5372
- **Platform-Specific Defaults**: Smart defaults based on operating system
@@ -56,114 +75,141 @@ This is a major release that modernizes Plaster for PowerShell 7.x while maintai
5675
### BUG FIXES
5776

5877
#### Core Issues
59-
- **XML Schema Validation**: Fixed .NET Core XML schema validation issues ([#107](https://github.com/PowerShellOrg/Plaster/issues/107))
60-
- **Constrained Runspace**: Resolved PowerShell 7.x constrained runspace compatibility
78+
79+
- **XML Schema Validation**: Fixed .NET Core XML schema validation issues
80+
([#107](https://github.com/PowerShellOrg/Plaster/issues/107))
81+
- **Constrained Runspace**: Resolved PowerShell 7.x constrained runspace
82+
compatibility
6183
- **Path Resolution**: Fixed absolute vs relative path handling across platforms
62-
- **Parameter Store**: Corrected parameter default value storage on non-Windows platforms
84+
- **Parameter Store**: Corrected parameter default value storage on non-Windows
85+
platforms
6386

6487
#### Template Processing
88+
6589
- **Variable Substitution**: Fixed edge cases in parameter substitution
6690
- **Conditional Logic**: Improved reliability of condition evaluation
6791
- **File Encoding**: Resolved encoding issues with template files
6892
- **Directory Creation**: Fixed recursive directory creation on Unix systems
6993

7094
#### Module Loading
95+
7196
- **Import Errors**: Resolved module import issues on PowerShell Core
7297
- **Dependency Resolution**: Fixed module dependency loading order
7398
- **Resource Loading**: Improved localized resource loading reliability
7499

75100
### MIGRATION GUIDE
76101

77102
#### For Template Authors
103+
78104
1. **No Changes Required**: Existing XML templates work without modification
79105
2. **Encoding**: Consider updating templates to use UTF-8 encoding
80106
3. **Testing**: Update any custom tests to use Pester 5.x syntax
81107

82108
#### For Template Users
109+
83110
1. **PowerShell Version**: Ensure PowerShell 5.1 or higher is installed
84111
2. **Module Update**: Use `Update-Module Plaster` to get version 2.0
85112
3. **Workflows**: No changes required to existing Invoke-Plaster usage
86113

87114
#### For Contributors
115+
88116
1. **Build System**: Use `./build.ps1` instead of psake commands
89117
2. **Tests**: Update to Pester 5.x syntax and configuration
90-
3. **Development**: Follow new coding standards and use modern PowerShell features
118+
3. **Development**: Follow new coding standards and use modern PowerShell
119+
features
91120

92121
### INTERNAL CHANGES
93122

94123
#### Code Quality
124+
95125
- **PSScriptAnalyzer**: Updated to latest rules and best practices
96126
- **Code Coverage**: Achieved >80% code coverage across all modules
97127
- **Documentation**: Comprehensive inline documentation and examples
98128
- **Type Safety**: Added parameter validation and type constraints
99129

100130
#### Architecture
131+
101132
- **Module Structure**: Reorganized for better maintainability
102133
- **Error Handling**: Centralized error handling and logging
103134
- **Resource Management**: Improved resource cleanup and disposal
104135
- **Platform Abstraction**: Abstracted platform-specific functionality
105136

106137
#### Testing
138+
107139
- **Test Coverage**: Comprehensive test suite covering all platforms
108140
- **Integration Tests**: Added end-to-end integration testing
109141
- **Performance Tests**: Benchmarking for performance regression detection
110142
- **Cross-Platform Tests**: Automated testing on Windows, Linux, and macOS
111143

112144
### ACKNOWLEDGMENTS
113145

114-
Special thanks to the PowerShell community for their patience during the transition and to all contributors who helped modernize Plaster for the PowerShell 7.x era.
146+
Special thanks to the PowerShell community for their patience during the
147+
transition and to all contributors who helped modernize Plaster for the
148+
PowerShell 7.x era.
115149

116150
### COMPATIBILITY MATRIX
117151

118-
| PowerShell Version | Windows | Linux | macOS | Status |
119-
|-------------------|---------|-------|-------|---------|
120-
| 5.1 (Desktop) ||| | Fully Supported |
121-
| 7.0+ (Core) ||| | Fully Supported |
122-
| 3.0-5.0 ||| | No Longer Supported |
152+
| PowerShell Version | Windows | Linux | macOS | Status |
153+
|--------------------|---------|-------|-------|---------------------|
154+
| 5.1 (Desktop) |||| Fully Supported |
155+
| 7.0+ (Core) |||| Fully Supported |
156+
| 3.0-5.0 |||| No Longer Supported |
123157

124158
---
125159

126160
## 1.1.4 - (Unreleased - Legacy)
127161

128162
### Fixed
129163

130-
- Write destination path with Write-Host so it doesn't add extra output when -PassThru specified
131-
[#326](https://github.com/PowerShell/Plaster/issues/326).
164+
- Write destination path with Write-Host so it doesn't add extra output when
165+
-PassThru specified [#326](https://github.com/PowerShell/Plaster/issues/326).
132166

133167
### Changed
134168

135-
- Updated PSScriptAnalyzerSettings.psd1 template file to sync w/latest in vscode-powershell examples.
136-
- Text parameter with default value where condition evaluates to false returns default value.
169+
- Updated PSScriptAnalyzerSettings.psd1 template file to sync w/latest in
170+
vscode-powershell examples.
171+
- Text parameter with default value where condition evaluates to false returns
172+
default value.
137173

138174
## 1.1.1 - 2017-10-26
139175

140176
### Fixed
141177

142-
- Added $IsMacOS variable to constrained runspace [#291](https://github.com/PowerShell/Plaster/issues/291).
143-
- Added missing .cat file from 1.1.0 release [#292](https://github.com/PowerShell/Plaster/issues/292).
178+
- Added $IsMacOS variable to constrained runspace
179+
[#291](https://github.com/PowerShell/Plaster/issues/291).
180+
- Added missing .cat file from 1.1.0 release
181+
[#292](https://github.com/PowerShell/Plaster/issues/292).
144182

145183
## 1.1.0 - 2017-10-25
146184

147185
### Fixed
148186

149-
- Fixed prompt errors when prompt text null or empty [#236](https://github.com/PowerShell/Plaster/issues/236).
150-
- Fixed New Module Script template's Test task which fails to run on x64 Visual Studio Code.
151-
- Fixed Test-PlasterManifest on non-Windows running .NET Core 2.0 failed with path using \ instead of /.
152-
Thanks to [@elmundio87](https://github.com/elmundio87) via PR [#282](https://github.com/PowerShell/Plaster/pull/282)
187+
- Fixed prompt errors when prompt text null or empty
188+
[#236](https://github.com/PowerShell/Plaster/issues/236).
189+
- Fixed New Module Script template's Test task which fails to run on x64 Visual
190+
Studio Code.
191+
- Fixed Test-PlasterManifest on non-Windows running .NET Core 2.0 failed with
192+
path using \ instead of /. Thanks to
193+
[@elmundio87](https://github.com/elmundio87) via PR
194+
[#282](https://github.com/PowerShell/Plaster/pull/282)
153195

154196
### Added
155197

156-
- Added constrained runspace cmdlet: Out-String [#235](https://github.com/PowerShell/Plaster/issues/236).
157-
- Added constrained runspace variables: PSVersionTable and on >= PS v6 IsLinux, IsOSX and IsWindows [#239](https://github.com/PowerShell/Plaster/issues/239).
158-
- The parameter element now supports a condition attribute so that prompting for parameters can be
159-
conditional based on environmental factors (such as OS) or answers to previous parameter prompts.
160-
This allows template authors to build a "dynamic" set of prompts.
161-
- Added constrained runspace cmdlet: Compare-Object [#286](https://github.com/PowerShell/Plaster/issues/287).
198+
- Added constrained runspace cmdlet: Out-String
199+
[#235](https://github.com/PowerShell/Plaster/issues/236).
200+
- Added constrained runspace variables: PSVersionTable and on >= PS v6 IsLinux,
201+
IsOSX and IsWindows [#239](https://github.com/PowerShell/Plaster/issues/239).
202+
- The parameter element now supports a condition attribute so that prompting for
203+
parameters can be conditional based on environmental factors (such as OS) or
204+
answers to previous parameter prompts. This allows template authors to build a
205+
"dynamic" set of prompts.
206+
- Added constrained runspace cmdlet: Compare-Object
207+
[#286](https://github.com/PowerShell/Plaster/issues/287).
162208

163209
### Changed
164210

165-
- Simplified New Module Script template user choices i.e. removed prompt for adding Pester test.
166-
The test is now always added.
211+
- Simplified New Module Script template user choices i.e. removed prompt for
212+
adding Pester test. The test is now always added.
167213

168214
## 1.0.1 - 2016-12-16
169215

@@ -175,15 +221,20 @@ Special thanks to the PowerShell community for their patience during the transit
175221

176222
## 0.3.0 - 2016-11-05
177223

178-
- Updated build script with support for building help from markdown files, building updatable help files and generating file catalog.
224+
- Updated build script with support for building help from markdown files,
225+
building updatable help files and generating file catalog.
179226
- Initial release shows the basics of what this module could do.
180227

181228
## 0.2.0 - 2016-07-31
182229

183-
- Introduced new directive `<templateFile>` that implicitlys expands the specified file(s), allowing the
184-
template author to set the target file encoding. This new directive supports a wildcard source specifier
185-
like the `<file>` directive. With this change, `<file>` no longer supports template expansion and as result
186-
the `template` and `encoding` attributes have been removed.
187-
- Restructured the module source to follow best practice of separating infrastructure from module files.
188-
- Fixed #47: How to create empty directories. The `<file>` directive supports this now.
189-
- Fixed #58: File recurse does not work anymore.
230+
- Introduced new directive `<templateFile>` that implicitlys expands the
231+
specified file(s), allowing the template author to set the target file
232+
encoding. This new directive supports a wildcard source specifier like the
233+
`<file>` directive. With this change, `<file>` no longer supports template
234+
expansion and as result the `template` and `encoding` attributes have been
235+
removed.
236+
- Restructured the module source to follow best practice of separating
237+
infrastructure from module files.
238+
- Fixed #47: How to create empty directories. The `<file>` directive supports
239+
this now.
240+
- Fixed #58: File recurse does not work anymore.

Plaster/Plaster.psd1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@{
1+
@{
22
# Script module or binary module file associated with this manifest.
33
RootModule = 'Plaster.psm1'
44

Plaster/Templates/AddPSScriptAnalyzerSettings/plasterManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<plasterManifest schemaVersion="0.4"
33
templateType="Item"
44
xmlns="http://www.microsoft.com/schemas/PowerShell/Plaster/v1">

Plaster/Templates/NewPowerShellScriptModule/plasterManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<plasterManifest schemaVersion="1.1"
33
templateType="Project"
44
xmlns="http://www.microsoft.com/schemas/PowerShell/Plaster/v1">

cspell.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616
"frommodule",
1717
"minimumversion",
1818
"plaster",
19+
"multichoice",
20+
"BHPS"
1921
],
2022
"ignoreWords": [],
2123
"import": []
22-
}
24+
}

examples/NewModule/editor/VSCode/tasks_pester.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,5 @@
4949
},
5050
"problemMatcher": [ "$pester" ]
5151
}
52-
]
52+
]
5353
}

examples/NewModule/editor/VSCode/tasks_psake.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,5 +79,5 @@
7979
"command": "Invoke-psake build.psake.ps1 -taskList Publish",
8080
"problemMatcher": []
8181
}
82-
]
82+
]
8383
}

examples/NewModule/editor/VSCode/tasks_psake_pester.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,5 +89,5 @@
8989
},
9090
"problemMatcher": [ "$pester" ]
9191
}
92-
]
92+
]
9393
}

0 commit comments

Comments
 (0)