├── .github ├── FUNDING.yml └── workflows │ ├── GitPub.yml │ └── TestAndPublish.yml ├── CHANGELOG.md ├── Formatting └── Piecemeal.Extension.format.ps1 ├── Get-Extension.ps1 ├── GitHub └── Actions │ └── PiecemealAction.ps1 ├── Install-Piecemeal.ps1 ├── LICENSE ├── New-Extension.ps1 ├── Piecemeal.GitHubAction.PSDevOps.ps1 ├── Piecemeal.GitHubWorkflow.psdevops.ps1 ├── Piecemeal.HelpOut.ps1 ├── Piecemeal.ezout.ps1 ├── Piecemeal.format.ps1xml ├── Piecemeal.psd1 ├── Piecemeal.psm1 ├── Piecemeal.tests.ps1 ├── README.md ├── action.yml ├── docs ├── 2021-12-20.md ├── 2021-12-27.md ├── 2021-12.md ├── 2021.md ├── 2022-01-09.md ├── 2022-01.md ├── 2022-02-18.md ├── 2022-02-19.md ├── 2022-02.md ├── 2022-03-02.md ├── 2022-03-03.md ├── 2022-03-04.md ├── 2022-03-09.md ├── 2022-03-27.md ├── 2022-03.md ├── 2022-04-10.md ├── 2022-04-13.md ├── 2022-04-25.md ├── 2022-04-30.md ├── 2022-04.md ├── 2022-05-02.md ├── 2022-05-03.md ├── 2022-05-27.md ├── 2022-05.md ├── 2022-06-16.md ├── 2022-06-20.md ├── 2022-06-25.md ├── 2022-06-27.md ├── 2022-06.md ├── 2022-07-11.md ├── 2022-07.md ├── 2022-09-04.md ├── 2022-09-18.md ├── 2022-09.md ├── 2022-11-15.md ├── 2022-11-19.md ├── 2022-11.md ├── 2022.md ├── 2023-02-02.md ├── 2023-02.md ├── 2023-03-03.md ├── 2023-03-08.md ├── 2023-03.md ├── 2023.md ├── CHANGELOG.md ├── CNAME ├── Get-Extension.md ├── Install-Piecemeal.md ├── New-Extension.md ├── README.md ├── _config.yml ├── _posts │ ├── 2021-12-20-Piecemeal-0.1.md │ ├── 2021-12-27-Piecemeal-0.1.1.md │ ├── 2022-01-09-Piecemeal-0.1.2.md │ ├── 2022-02-18-Piecemeal-0.1.3.md │ ├── 2022-02-19-Piecemeal-0.1.4.md │ ├── 2022-03-02-Piecemeal-0.1.5.md │ ├── 2022-03-03-Piecemeal-0.1.6.md │ ├── 2022-03-04-Piecemeal-0.1.7.md │ ├── 2022-03-04-Piecemeal-0.1.8.md │ ├── 2022-03-04-Piecemeal-0.1.9.md │ ├── 2022-03-09-Piecemeal-0.1.10.md │ ├── 2022-03-27-Piecemeal-0.2.md │ ├── 2022-04-10-Piecemeal-0.2.1.md │ ├── 2022-04-13-Piecemeal-0.2.2.md │ ├── 2022-04-25-Piecemeal-0.2.3.md │ ├── 2022-04-30-Piecemeal-0.2.4.md │ ├── 2022-05-02-Piecemeal-0.2.5.md │ ├── 2022-05-03-Piecemeal-0.2.6.md │ ├── 2022-05-27-Piecemeal-0.2.7.md │ ├── 2022-06-16-Piecemeal-0.2.8.md │ ├── 2022-06-20-Piecemeal-0.2.9.1.md │ ├── 2022-06-20-Piecemeal-0.2.9.md │ ├── 2022-06-25-Piecemeal-0.3.0.md │ ├── 2022-06-27-Piecemeal-0.3.1.md │ ├── 2022-06-27-Piecemeal-0.3.2.md │ ├── 2022-07-11-Piecemeal-0.3.3.md │ ├── 2022-09-04-Piecemeal-0.3.4.md │ ├── 2022-09-18-Piecemeal-0.3.5.md │ ├── 2022-11-15-Piecemeal-0.3.6.md │ ├── 2022-11-19-Piecemeal-0.3.7.md │ ├── 2023-02-02-Piecemeal-0.3.8.md │ ├── 2023-03-03-Piecemeal-0.3.9.md │ └── 2023-03-08-Piecemeal-0.3.10.md └── rss.xml └── en-us └── about_Piecemeal.help.txt /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [StartAutomating] 2 | -------------------------------------------------------------------------------- /.github/workflows/GitPub.yml: -------------------------------------------------------------------------------- 1 | 2 | name: GitPub 3 | on: 4 | issues: 5 | workflow_dispatch: 6 | jobs: 7 | RunGitPub: 8 | runs-on: ubuntu-latest 9 | if: ${{ success() }} 10 | steps: 11 | - name: Check out repository 12 | uses: actions/checkout@v2 13 | - name: Use GitPub Action 14 | uses: StartAutomating/GitPub@main 15 | id: GitPub 16 | with: 17 | TargetBranch: edits-$([DateTime]::Now.ToString("r").Replace(":","-").Replace(" ", "")) 18 | CommitMessage: Posting with GitPub [skip ci] 19 | PublishParameters: | 20 | { 21 | "Get-GitPubIssue": { 22 | "Repository": '${{github.repository}}' 23 | }, 24 | "Get-GitPubRelease": { 25 | "Repository": '${{github.repository}}' 26 | }, 27 | "Publish-GitPubJekyll": { 28 | "OutputPath": "docs/_posts" 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## Piecemeal@0.4.1: 2 | 3 | * Enabling Sponsorship for Piecemeal (#139) 4 | * Improving -ExtensionName performance for Aliases (#141) 5 | * Tolerating lack of CommandMetaData (#124) 6 | 7 | --- 8 | 9 | ## Piecemeal@0.4: 10 | 11 | * Enabling Sponsorship for Piecemeal (#139) 12 | * Improving -ExtensionName performance (#138) 13 | * Not recursing when -ExtensionPath is local (#137) 14 | 15 | --- 16 | 17 | ## Piecemeal@0.3.10: 18 | ### Piecemeal Performance Improvements 19 | 20 | * Checking before extending objects (Fixes #134) 21 | * No Longer Allowing A Cmdlet to be an Extension (Fixes #133) 22 | * Improving the performance of .Extends/ .ExtensionCommands (Fixes #132) 23 | * Improving Terseness related performance (Fixes #131) 24 | * Caching Extensions from Files until the File Changes (Fixes #130) 25 | * Improving the performance of Get-Extension without -CommandName (Fixes #129) 26 | 27 | --- 28 | 29 | ## Piecemeal@0.3.9: 30 | 31 | * Allowing any command to be an extension! (Fixes #120) 32 | 33 | Functions, Cmdlets, and Aliases that meet the the naming convention will be seen as extensions by Get-Extension. 34 | 35 | In most cases, this allows extensions to be defined in memory or on disk. 36 | 37 | * Allowing .DisplayName to be set (Fixes #123) 38 | * Adding .CouldPipeType to all extensions (Fixes #121) 39 | * Not allowing a directories to be extensions (for now) (Fixes #125) 40 | * Not clearing an extension's .PSTypeNames (inserting instead) (Fixes #126) 41 | 42 | --- 43 | 44 | ## Piecemeal@0.3.8: 45 | 46 | * Adding .HasValidation to all extensions (Fixes #117) 47 | * All extension methods and properties are now prevalidated in case of collision (Fixes #118) 48 | 49 | --- 50 | 51 | ## Piecemeal@0.3.7: 52 | 53 | * Get-Extension: Stringifying input for ValidatePattern (Fixes #114) 54 | 55 | --- 56 | 57 | ## Piecemeal@0.3.6: 58 | 59 | * Get-Extension -CouldPipe can now handle PSTypeName attributes (Fixes #109) 60 | * Piecemeal action no longer produces output variables (Fixes #110) 61 | * Now Publishing with [GitPub](https://github.com/StartAutomating/GitPub) (Fixes #111) 62 | 63 | --- 64 | 65 | ## Piecemeal@0.3.5: 66 | * GitHub Action now checks if it is on a branch (Fixes #107) 67 | 68 | --- 69 | 70 | ## Piecemeal@0.3.4: 71 | * Get-Extension 72 | * Adding -Force (Fixes #103) 73 | * Caching allCommands (Fixes #104) 74 | * Only allowing Functions, Aliases, and Cmdlets to be extended (Fixes #105) 75 | 76 | --- 77 | 78 | ## Piecemeal@0.3.3: 79 | * Consolidating -Help parameters (#101) 80 | * Fixing .GetHelpField (#100) 81 | 82 | --- 83 | 84 | ## Piecemeal@0.3.2: 85 | * Piecemeal Available as a GitHub Action (#56) 86 | * Get-Extension: 87 | * Adding .BlockComments property (#96) 88 | * Fixing GetHelpField whitespace (#95) 89 | * Scoping GetHelpField matches to .BlockComments (#94) 90 | * Trimming leading whitespace from .Synopsis and .Description (#99) 91 | * Install-Piecemeal: 92 | * Returns a file when -OutputPath is passed (#97) 93 | 94 | --- 95 | 96 | ## Piecemeal@0.3.1: 97 | * Get-Extension: 98 | * New Properties/Methods for Each Extension 99 | * .Category (#89) 100 | * .GetHelpField() (#91) 101 | * .Examples (#87) 102 | * .Links (#88) 103 | * .Metadata (#90) 104 | * Removing -RequireExtensionAttribute (#92) 105 | 106 | --- 107 | 108 | ## Piecemeal@0.3.0: 109 | * Get-Extension: 110 | * Ensuring Regexes IgnoreCase (#85) 111 | * Trimming Trailing Whitepace from .Synopsis and .Description (#84) 112 | 113 | --- 114 | 115 | ## Piecemeal@0.2.9.1: 116 | * Fixing Get-Extension overcollection (#82) 117 | 118 | --- 119 | 120 | ## Piecemeal@0.2.9: 121 | * Get-Extension: 122 | * -CouldRun now honors validation attributes (#77) 123 | * -CouldPipe now honors validation attributes (#78) 124 | * -ExtensionName now supports Regex Literal Aliases ```[Alias(/Expression/)]``` (#80) 125 | * -CouldRun, -CouldPipe, -Validate are no longer mutually exclusive (#79) 126 | * Install-Piecemeal 127 | * Support for custom -WhereObject (#73) 128 | * Support for custom -ForeachObject (#74) 129 | 130 | --- 131 | 132 | ## Piecemeal@0.2.8 133 | * Get-Extension: 134 | * Performance Improvements (#75) 135 | * Regular Expressions now IgnorePatternWhitespace (#71) 136 | * -ExtensionPattern allows for multiple patterns (#70) 137 | * Allowing any command type (#65) 138 | * Install-Piecemeal: 139 | * Adding -RenameVariable (#72) 140 | * Automatically renaming parameters when -ExtensionNoun is provided (#60) 141 | 142 | --- 143 | 144 | ## Piecemeal@0.2.7 145 | * Get-Extension 146 | * Allowing any command type (#65) 147 | * Fixing -CouldPipe (#67) 148 | 149 | --- 150 | 151 | ## Piecemeal@0.2.6 152 | * Get-Extension: 153 | * Matching -ExtensionName support aliases (#63) 154 | * Matching -ExtensionName against .DisplayName or .Name (#61) 155 | * Get-Extension: -CouldPipe no longer cares about manadatory parameters (#62) 156 | 157 | --- 158 | 159 | ## Piecemeal@0.2.5 160 | * Get-Extension: Adding -CouldPipe (#58) 161 | * Get-Extension: Fixing .Tags based inclusion (#57) 162 | 163 | --- 164 | 165 | ## Piecemeal@0.2.4 166 | * Install-Piecemeal: Making -ExtensionModule Optional (#54) 167 | 168 | --- 169 | 170 | ## Piecemeal@0.2.3 171 | * Adding New-Extension (#51) 172 | * Generating Docs (#52) 173 | * Allowing New-Extension to be installed with Install-Piecemeal 174 | 175 | --- 176 | 177 | ## Piecemeal@0.2.2 178 | * Adding test for [ValidateScript] (#47) 179 | * Updating Piecemeal tests (checking validation order) (#48) 180 | * Get-Extension: Fixing -ValidateInput logic (#48) 181 | * Get-Extension: Fixing support for [ValidateScript] (#47) 182 | 183 | --- 184 | 185 | ## Piecemeal@0.2.1 186 | * Get-Extension: Support for -AllValid (#45) 187 | * Get-Extension: Removing Validation Errors when -ErrorAction is ignore (#43) 188 | * Updating Piecemeal tests: Adding test for Steppable Pipeline (#42) 189 | * Updating Piecemeal Formatting (making .Extends a list) (re #44) 190 | * Get-Extension: Support for SteppablePipelines (#42). Fixing .Extends bug (#44) 191 | 192 | --- 193 | 194 | ## Piecemeal@0.2 195 | * Adding formatting for extensions (#40) 196 | * Updating Piecemeal tests (account for Regex) (#39) 197 | * Get-Extension: Regex support for [Cmdlet] attribute (#39) 198 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) (#38) 199 | * Get-Extension: Adding -Help (#38) 200 | 201 | --- 202 | 203 | ## Piecemeal@0.1.10 204 | * Get-Extension: Adding -ParameterSetName (#36) 205 | * Install-Extension: Adding -Force to Import-Module in Install Note (#32) 206 | 207 | --- 208 | 209 | ## Piecemeal@0.1.9 210 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) (#31) 211 | 212 | --- 213 | 214 | ## Piecemeal@0.1.8 215 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (#31) 216 | * Install-Piecemeal: Improving Install Message (#32) 217 | 218 | --- 219 | 220 | ## Piecemeal@0.1.7 221 | * Get-Extension: Now inherits ParameterSetName (#28) 222 | * Get-Extension: Fixing issue properly displaying Valid Set (#29) 223 | 224 | --- 225 | 226 | ## Piecemeal@0.1.6 227 | * Get-Extension now supports all validation attributes (#26/#25) 228 | 229 | --- 230 | 231 | ## Piecemeal@0.1.5 232 | * Extensions are now Sortable (#19) 233 | * Get-Extension supports -ExtensionName (#20) 234 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern (#21) 235 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] (#22) 236 | 237 | --- 238 | 239 | ## Piecemeal@0.1.4 240 | * Get-Extension: 241 | * Can now filter extension parameters based off of command (#17) 242 | 243 | --- 244 | 245 | ## Piecemeal@0.1.3 246 | * Get-Extension: 247 | * Added -RequireExtensionAttribute (#13) 248 | * Added -RequireCmdletAttribute (#14) 249 | * Respecting [CmdletBinding(DefaultParameterSetName)] (#12) 250 | * Surfacing attributes (#11) 251 | * Install-Piecemeal: 252 | * Allowing customization of -ExtensionName (#10) 253 | * Making $script variables unique (#9) 254 | * Fixing issues on Core (#16) 255 | 256 | --- 257 | 258 | ## Piecemeal@0.1.2 259 | * Get-Extension: 260 | * Added -NoMandatoryDynamicParameter (#6 / #4) 261 | * [Parameter] attributes are now copied, so underlying commands are unchanged (#7) 262 | 263 | --- 264 | 265 | ## Piecemeal@0.1.1 266 | * Get-Extension: 267 | * -Parameter not accepts ValueFromPipelineByPropertyName (#2) 268 | * -CommandName now works (#3) 269 | * .GetDynamicParameters now supports -NoMandatory (#4) 270 | 271 | --- 272 | 273 | ## Piecemeal@0.1 274 | * Initial Release of Piecemeal 275 | 276 | --- -------------------------------------------------------------------------------- /Formatting/Piecemeal.Extension.format.ps1: -------------------------------------------------------------------------------- 1 | Write-FormatView -TypeName Extension -Property DisplayName, Synopsis, Extends, Parameters -VirtualProperty @{ 2 | Parameters = { 3 | @(foreach ($kv in ([Management.Automation.CommandMetaData]$_).Parameters.GetEnumerator()) { 4 | @( 5 | . $setOutputStyle -ForegroundColor Verbose 6 | "[$($kv.Value.ParameterType)]" 7 | . $clearOutputStyle 8 | . $setOutputStyle -ForegroundColor Warning 9 | "`$$($kv.Key)" 10 | . $clearOutputStyle 11 | ) -join '' 12 | }) -join [Environment]::NewLine 13 | } 14 | Extends = { 15 | $_.Extends -join [Environment]::NewLine 16 | } 17 | } -Wrap -ColorProperty @{ 18 | "DisplayName" = {"Success"} 19 | } 20 | -------------------------------------------------------------------------------- /GitHub/Actions/PiecemealAction.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | .Synopsis 3 | GitHub Action for Piecemeal 4 | .Description 5 | GitHub Action for Piecemeal. This will: 6 | 7 | * Import Piecemeal 8 | * Run all *.Piecemeal.ps1 files beneath the workflow directory 9 | * Run a .PiecemealScript parameter 10 | 11 | Any files changed can be outputted by the script, and those changes can be checked back into the repo. 12 | Make sure to use the "persistCredentials" option with checkout. 13 | #> 14 | 15 | param( 16 | # A PowerShell Script that uses Piecemeal. 17 | # Any files outputted from the script will be added to the repository. 18 | # If those files have a .Message attached to them, they will be committed with that message. 19 | [string] 20 | $PiecemealScript, 21 | 22 | # If set, will not process any files named *.Piecemeal.ps1 23 | [switch] 24 | $SkipPiecemealPS1, 25 | 26 | # The name of the module for which types and formats are being generated. 27 | # If not provided, this will be assumed to be the name of the root directory. 28 | [string] 29 | $ModuleName, 30 | 31 | # If provided, will commit any remaining changes made to the workspace with this commit message. 32 | # If no commit message is provided, changes will not be committed. 33 | [string] 34 | $CommitMessage, 35 | 36 | # The user email associated with a git commit. 37 | [string] 38 | $UserEmail, 39 | 40 | # The user name associated with a git commit. 41 | [string] 42 | $UserName 43 | ) 44 | 45 | "::group::Parameters" | Out-Host 46 | [PSCustomObject]$PSBoundParameters | Format-List | Out-Host 47 | "::endgroup::" | Out-Host 48 | 49 | 50 | $gitHubEvent = if ($env:GITHUB_EVENT_PATH) { 51 | [IO.File]::ReadAllText($env:GITHUB_EVENT_PATH) | ConvertFrom-Json 52 | } else { $null } 53 | 54 | @" 55 | ::group::GitHubEvent 56 | $($gitHubEvent | ConvertTo-Json -Depth 100) 57 | ::endgroup:: 58 | "@ | Out-Host 59 | 60 | $branchName = git rev-parse --abrev-ref HEAD 61 | if (-not $branchName) { 62 | return 63 | } 64 | 65 | if ($env:GITHUB_ACTION_PATH) { 66 | $PiecemealModulePath = Join-Path $env:GITHUB_ACTION_PATH 'Piecemeal.psd1' 67 | if (Test-path $PiecemealModulePath) { 68 | Import-Module $PiecemealModulePath -Force -PassThru | Out-String 69 | } else { 70 | throw "Piecemeal not found" 71 | } 72 | } elseif (-not (Get-Module Piecemeal)) { 73 | throw "Action Path not found" 74 | } 75 | 76 | "::notice title=ModuleLoaded::Piecemeal Loaded from Path - $($PiecemealModulePath)" | Out-Host 77 | 78 | $anyFilesChanged = $false 79 | $processScriptOutput = { process { 80 | $out = $_ 81 | $outItem = Get-Item -Path $out -ErrorAction SilentlyContinue 82 | $fullName, $shouldCommit = 83 | if ($out -is [IO.FileInfo]) { 84 | $out.FullName, (git status $out.Fullname -s) 85 | } elseif ($outItem) { 86 | $outItem.FullName, (git status $outItem.Fullname -s) 87 | } 88 | if ($shouldCommit) { 89 | git add $fullName 90 | if ($out.Message) { 91 | git commit -m "$($out.Message)" 92 | } elseif ($out.CommitMessage) { 93 | git commit -m "$($out.CommitMessage)" 94 | } elseif ($gitHubEvent.head_commit.message) { 95 | git commit -m "$($gitHubEvent.head_commit.message)" 96 | } 97 | $anyFilesChanged = $true 98 | } 99 | $out 100 | } } 101 | 102 | 103 | if (-not $UserName) { $UserName = $env:GITHUB_ACTOR } 104 | if (-not $UserEmail) { $UserEmail = "$UserName@github.com" } 105 | git config --global user.email $UserEmail 106 | git config --global user.name $UserName 107 | 108 | if (-not $env:GITHUB_WORKSPACE) { throw "No GitHub workspace" } 109 | 110 | git pull | Out-Host 111 | 112 | $PiecemealScriptStart = [DateTime]::Now 113 | if ($PiecemealScript) { 114 | Invoke-Expression -Command $PiecemealScript | 115 | . $processScriptOutput | 116 | Out-Host 117 | } 118 | $PiecemealScriptTook = [Datetime]::Now - $PiecemealScriptStart 119 | 120 | $PiecemealPS1Start = [DateTime]::Now 121 | $PiecemealPS1List = @() 122 | if (-not $SkipPiecemealPS1) { 123 | $PiecemealFiles = @( 124 | Get-ChildItem -Recurse -Path $env:GITHUB_WORKSPACE | 125 | Where-Object Name -Match '\.Piecemeal\.ps1$') 126 | 127 | if ($PiecemealFiles) { 128 | $PiecemealFiles| 129 | ForEach-Object { 130 | $PiecemealPS1List += $_.FullName.Replace($env:GITHUB_WORKSPACE, '').TrimStart('/') 131 | $PiecemealPS1Count++ 132 | "::notice title=Running::$($_.Fullname)" | Out-Host 133 | . $_.FullName | 134 | . $processScriptOutput | 135 | Out-Host 136 | } 137 | } 138 | } 139 | 140 | $PiecemealPS1EndStart = [DateTime]::Now 141 | $PiecemealPS1Took = [Datetime]::Now - $PiecemealPS1Start 142 | if ($CommitMessage -or $anyFilesChanged) { 143 | if ($CommitMessage) { 144 | dir $env:GITHUB_WORKSPACE -Recurse | 145 | ForEach-Object { 146 | $gitStatusOutput = git status $_.Fullname -s 147 | if ($gitStatusOutput) { 148 | git add $_.Fullname 149 | } 150 | } 151 | 152 | git commit -m $ExecutionContext.SessionState.InvokeCommand.ExpandString($CommitMessage) 153 | } 154 | 155 | $checkDetached = git symbolic-ref -q HEAD 156 | if (-not $LASTEXITCODE) { 157 | "::notice::Pushing Changes" | Out-Host 158 | git push 159 | "Git Push Output: $($gitPushed | Out-String)" 160 | } else { 161 | "::notice::Not pushing changes (on detached head)" | Out-Host 162 | $LASTEXITCODE = 0 163 | exit 0 164 | } 165 | } 166 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 James Brundage 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Piecemeal.GitHubAction.PSDevOps.ps1: -------------------------------------------------------------------------------- 1 | #requires -Module PSDevOps 2 | #requires -Module Piecemeal 3 | Import-BuildStep -ModuleName Piecemeal 4 | New-GitHubAction -Name "UsePiecemeal" -Description @' 5 | Add extensibility to any PowerShell module with Piecemeal 6 | '@ -Action PiecemealAction -Icon terminal -OutputPath .\action.yml -------------------------------------------------------------------------------- /Piecemeal.GitHubWorkflow.psdevops.ps1: -------------------------------------------------------------------------------- 1 | #requires -Module PSDevOps 2 | #requires -Module GitPub 3 | 4 | Push-Location $PSScriptRoot 5 | 6 | New-GitHubWorkflow -Name "Analyze, Test, Tag, and Publish" -On Push, PullRequest, Demand -Job PowerShellStaticAnalysis, 7 | TestPowerShellOnLinux, 8 | TagReleaseAndPublish, 9 | RunHelpOut -OutputPath .\.github\workflows\TestAndPublish.yml 10 | 11 | Import-BuildStep -ModuleName GitPub 12 | 13 | New-GitHubWorkflow -On Issue, Demand -Job RunGitPub -Name "GitPub" -OutputPath .\.github\workflows\GitPub.yml 14 | 15 | Pop-Location -------------------------------------------------------------------------------- /Piecemeal.HelpOut.ps1: -------------------------------------------------------------------------------- 1 | $piecemealLoaded = Get-Module Piecemeal 2 | if (-not $piecemealLoaded) { 3 | $piecemealLoaded = Get-ChildItem -Recurse -Filter "*.psd1" | Where-Object Name -like 'Piecemeal*' | Import-Module -Name { $_.FullName } -Force -PassThru 4 | } 5 | if ($piecemealLoaded) { 6 | "::notice title=ModuleLoaded::Piecemeal Loaded" | Out-Host 7 | } else { 8 | "::error:: Piecemeal not loaded" |Out-Host 9 | } 10 | if ($piecemealLoaded) { 11 | Save-MarkdownHelp -Module $piecemealLoaded.Name -PassThru 12 | } 13 | -------------------------------------------------------------------------------- /Piecemeal.ezout.ps1: -------------------------------------------------------------------------------- 1 | #requires -Module EZOut 2 | # Install-Module EZOut or https://github.com/StartAutomating/EZOut 3 | $myFile = $MyInvocation.MyCommand.ScriptBlock.File 4 | $myModuleName = 'Piecemeal' 5 | $myRoot = $myFile | Split-Path 6 | Push-Location $myRoot 7 | $formatting = @( 8 | # Add your own Write-FormatView here, 9 | # or put them in a Formatting or Views directory 10 | foreach ($potentialDirectory in 'Formatting','Views') { 11 | Join-Path $myRoot $potentialDirectory | 12 | Get-ChildItem -ea ignore | 13 | Import-FormatView -FilePath {$_.Fullname} 14 | } 15 | ) 16 | 17 | $destinationRoot = $myRoot 18 | 19 | if ($formatting) { 20 | $myFormatFile = Join-Path $destinationRoot "$myModuleName.format.ps1xml" 21 | $formatting | Out-FormatData -Module $MyModuleName | Set-Content $myFormatFile -Encoding UTF8 22 | } 23 | 24 | $types = @( 25 | # Add your own Write-TypeView statements here 26 | # or declare them in the 'Types' directory 27 | Join-Path $myRoot Types | 28 | Get-Item -ea ignore | 29 | Import-TypeView 30 | 31 | ) 32 | 33 | if ($types) { 34 | $myTypesFile = Join-Path $destinationRoot "$myModuleName.types.ps1xml" 35 | $types | Out-TypeData | Set-Content $myTypesFile -Encoding UTF8 36 | } 37 | Pop-Location 38 | -------------------------------------------------------------------------------- /Piecemeal.psd1: -------------------------------------------------------------------------------- 1 | @{ 2 | ModuleVersion = '0.4.1' 3 | RootModule = 'Piecemeal.psm1' 4 | Description = 'Easy Extensible Plugins for PowerShell' 5 | GUID = '91e2c328-d7dc-44a3-aeeb-ef3b19c36767' 6 | Author = 'James Brundage' 7 | Copyright = '2021-2023 Start-Automating' 8 | CompanyName = 'Start-Automating' 9 | FormatsToProcess = 'Piecemeal.format.ps1xml' 10 | PrivateData = @{ 11 | PSData = @{ 12 | Tags = 'PowerShell', 'Plugin', 'Extension', 'Extensibility' 13 | ProjectURI = 'https://github.com/StartAutomating/Piecemeal' 14 | LicenseURI = 'https://github.com/StartAutomating/Piecemeal/blob/main/LICENSE' 15 | ReleaseNotes = @' 16 | ## Piecemeal@0.4.1: 17 | 18 | * Enabling Sponsorship for Piecemeal (#139) 19 | * Improving -ExtensionName performance for Aliases (#141) 20 | * Tolerating lack of CommandMetaData (#124) 21 | 22 | --- 23 | 24 | ## Piecemeal@0.4: 25 | 26 | * Enabling Sponsorship for Piecemeal (#139) 27 | * Improving -ExtensionName performance (#138) 28 | * Not recursing when -ExtensionPath is local (#137) 29 | 30 | --- 31 | 32 | ## Piecemeal@0.3.10: 33 | ### Piecemeal Performance Improvements 34 | 35 | * Checking before extending objects (Fixes #134) 36 | * No Longer Allowing A Cmdlet to be an Extension (Fixes #133) 37 | * Improving the performance of .Extends/ .ExtensionCommands (Fixes #132) 38 | * Improving Terseness related performance (Fixes #131) 39 | * Caching Extensions from Files until the File Changes (Fixes #130) 40 | * Improving the performance of Get-Extension without -CommandName (Fixes #129) 41 | 42 | --- 43 | 44 | ## Piecemeal@0.3.9: 45 | 46 | * Allowing any command to be an extension! (Fixes #120) 47 | 48 | Functions, Cmdlets, and Aliases that meet the the naming convention will be seen as extensions by Get-Extension. 49 | 50 | In most cases, this allows extensions to be defined in memory or on disk. 51 | 52 | * Allowing .DisplayName to be set (Fixes #123) 53 | * Adding .CouldPipeType to all extensions (Fixes #121) 54 | * Not allowing a directories to be extensions (for now) (Fixes #125) 55 | * Not clearing an extension's .PSTypeNames (inserting instead) (Fixes #126) 56 | 57 | --- 58 | 59 | ## Piecemeal@0.3.8: 60 | 61 | * Adding .HasValidation to all extensions (Fixes #117) 62 | * All extension methods and properties are now prevalidated in case of collision (Fixes #118) 63 | 64 | --- 65 | 66 | ## Piecemeal@0.3.7: 67 | 68 | * Get-Extension: Stringifying input for ValidatePattern (Fixes #114) 69 | 70 | --- 71 | 72 | ## Piecemeal@0.3.6: 73 | 74 | * Get-Extension -CouldPipe can now handle PSTypeName attributes (Fixes #109) 75 | * Piecemeal action no longer produces output variables (Fixes #110) 76 | * Now Publishing with [GitPub](https://github.com/StartAutomating/GitPub) (Fixes #111) 77 | 78 | --- 79 | 80 | ## Piecemeal@0.3.5: 81 | * GitHub Action now checks if it is on a branch (Fixes #107) 82 | 83 | --- 84 | 85 | ## Piecemeal@0.3.4: 86 | * Get-Extension 87 | * Adding -Force (Fixes #103) 88 | * Caching allCommands (Fixes #104) 89 | * Only allowing Functions, Aliases, and Cmdlets to be extended (Fixes #105) 90 | 91 | --- 92 | 93 | ## Piecemeal@0.3.3: 94 | * Consolidating -Help parameters (#101) 95 | * Fixing .GetHelpField (#100) 96 | 97 | --- 98 | 99 | ## Piecemeal@0.3.2: 100 | * Piecemeal Available as a GitHub Action (#56) 101 | * Get-Extension: 102 | * Adding .BlockComments property (#96) 103 | * Fixing GetHelpField whitespace (#95) 104 | * Scoping GetHelpField matches to .BlockComments (#94) 105 | * Trimming leading whitespace from .Synopsis and .Description (#99) 106 | * Install-Piecemeal: 107 | * Returns a file when -OutputPath is passed (#97) 108 | 109 | --- 110 | 111 | ## Piecemeal@0.3.1: 112 | * Get-Extension: 113 | * New Properties/Methods for Each Extension 114 | * .Category (#89) 115 | * .GetHelpField() (#91) 116 | * .Examples (#87) 117 | * .Links (#88) 118 | * .Metadata (#90) 119 | * Removing -RequireExtensionAttribute (#92) 120 | 121 | --- 122 | 123 | ## Piecemeal@0.3.0: 124 | * Get-Extension: 125 | * Ensuring Regexes IgnoreCase (#85) 126 | * Trimming Trailing Whitepace from .Synopsis and .Description (#84) 127 | 128 | --- 129 | 130 | ## Piecemeal@0.2.9.1: 131 | * Fixing Get-Extension overcollection (#82) 132 | 133 | --- 134 | 135 | ## Piecemeal@0.2.9: 136 | * Get-Extension: 137 | * -CouldRun now honors validation attributes (#77) 138 | * -CouldPipe now honors validation attributes (#78) 139 | * -ExtensionName now supports Regex Literal Aliases ```[Alias(/Expression/)]``` (#80) 140 | * -CouldRun, -CouldPipe, -Validate are no longer mutually exclusive (#79) 141 | * Install-Piecemeal 142 | * Support for custom -WhereObject (#73) 143 | * Support for custom -ForeachObject (#74) 144 | 145 | --- 146 | 147 | ## Piecemeal@0.2.8 148 | * Get-Extension: 149 | * Performance Improvements (#75) 150 | * Regular Expressions now IgnorePatternWhitespace (#71) 151 | * -ExtensionPattern allows for multiple patterns (#70) 152 | * Allowing any command type (#65) 153 | * Install-Piecemeal: 154 | * Adding -RenameVariable (#72) 155 | * Automatically renaming parameters when -ExtensionNoun is provided (#60) 156 | 157 | --- 158 | 159 | ## Piecemeal@0.2.7 160 | * Get-Extension 161 | * Allowing any command type (#65) 162 | * Fixing -CouldPipe (#67) 163 | 164 | --- 165 | 166 | ## Piecemeal@0.2.6 167 | * Get-Extension: 168 | * Matching -ExtensionName support aliases (#63) 169 | * Matching -ExtensionName against .DisplayName or .Name (#61) 170 | * Get-Extension: -CouldPipe no longer cares about manadatory parameters (#62) 171 | 172 | --- 173 | 174 | ## Piecemeal@0.2.5 175 | * Get-Extension: Adding -CouldPipe (#58) 176 | * Get-Extension: Fixing .Tags based inclusion (#57) 177 | 178 | --- 179 | 180 | ## Piecemeal@0.2.4 181 | * Install-Piecemeal: Making -ExtensionModule Optional (#54) 182 | 183 | --- 184 | 185 | ## Piecemeal@0.2.3 186 | * Adding New-Extension (#51) 187 | * Generating Docs (#52) 188 | * Allowing New-Extension to be installed with Install-Piecemeal 189 | 190 | --- 191 | 192 | ## Piecemeal@0.2.2 193 | * Adding test for [ValidateScript] (#47) 194 | * Updating Piecemeal tests (checking validation order) (#48) 195 | * Get-Extension: Fixing -ValidateInput logic (#48) 196 | * Get-Extension: Fixing support for [ValidateScript] (#47) 197 | 198 | --- 199 | 200 | ## Piecemeal@0.2.1 201 | * Get-Extension: Support for -AllValid (#45) 202 | * Get-Extension: Removing Validation Errors when -ErrorAction is ignore (#43) 203 | * Updating Piecemeal tests: Adding test for Steppable Pipeline (#42) 204 | * Updating Piecemeal Formatting (making .Extends a list) (re #44) 205 | * Get-Extension: Support for SteppablePipelines (#42). Fixing .Extends bug (#44) 206 | 207 | --- 208 | 209 | ## Piecemeal@0.2 210 | * Adding formatting for extensions (#40) 211 | * Updating Piecemeal tests (account for Regex) (#39) 212 | * Get-Extension: Regex support for [Cmdlet] attribute (#39) 213 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) (#38) 214 | * Get-Extension: Adding -Help (#38) 215 | 216 | --- 217 | 218 | ## Piecemeal@0.1.10 219 | * Get-Extension: Adding -ParameterSetName (#36) 220 | * Install-Extension: Adding -Force to Import-Module in Install Note (#32) 221 | 222 | --- 223 | 224 | ## Piecemeal@0.1.9 225 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) (#31) 226 | 227 | --- 228 | 229 | ## Piecemeal@0.1.8 230 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (#31) 231 | * Install-Piecemeal: Improving Install Message (#32) 232 | 233 | --- 234 | 235 | ## Piecemeal@0.1.7 236 | * Get-Extension: Now inherits ParameterSetName (#28) 237 | * Get-Extension: Fixing issue properly displaying Valid Set (#29) 238 | 239 | --- 240 | 241 | ## Piecemeal@0.1.6 242 | * Get-Extension now supports all validation attributes (#26/#25) 243 | 244 | --- 245 | 246 | ## Piecemeal@0.1.5 247 | * Extensions are now Sortable (#19) 248 | * Get-Extension supports -ExtensionName (#20) 249 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern (#21) 250 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] (#22) 251 | 252 | --- 253 | 254 | ## Piecemeal@0.1.4 255 | * Get-Extension: 256 | * Can now filter extension parameters based off of command (#17) 257 | 258 | --- 259 | 260 | ## Piecemeal@0.1.3 261 | * Get-Extension: 262 | * Added -RequireExtensionAttribute (#13) 263 | * Added -RequireCmdletAttribute (#14) 264 | * Respecting [CmdletBinding(DefaultParameterSetName)] (#12) 265 | * Surfacing attributes (#11) 266 | * Install-Piecemeal: 267 | * Allowing customization of -ExtensionName (#10) 268 | * Making $script variables unique (#9) 269 | * Fixing issues on Core (#16) 270 | 271 | --- 272 | 273 | ## Piecemeal@0.1.2 274 | * Get-Extension: 275 | * Added -NoMandatoryDynamicParameter (#6 / #4) 276 | * [Parameter] attributes are now copied, so underlying commands are unchanged (#7) 277 | 278 | --- 279 | 280 | ## Piecemeal@0.1.1 281 | * Get-Extension: 282 | * -Parameter not accepts ValueFromPipelineByPropertyName (#2) 283 | * -CommandName now works (#3) 284 | * .GetDynamicParameters now supports -NoMandatory (#4) 285 | 286 | --- 287 | 288 | ## Piecemeal@0.1 289 | * Initial Release of Piecemeal 290 | 291 | --- 292 | '@ 293 | } 294 | } 295 | } 296 | -------------------------------------------------------------------------------- /Piecemeal.psm1: -------------------------------------------------------------------------------- 1 | . $PSScriptRoot\New-Extension.ps1 2 | . $PSScriptRoot\Get-Extension.ps1 3 | . $PSScriptRoot\Install-Piecemeal.ps1 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Piecemeal enables Easy Extensible Plugins for PowerShell. 2 | 3 | ## What is Piecemeal? 4 | 5 | Piecemeal is a little PowerShell module that helps solve a big problem: PowerShell extensibility. 6 | 7 | Piecemeal allows function and scripts to have extended capabilities and act as extensions for any command. 8 | 9 | Piecemeal standardizes these capabilities and provides a simple function you can embed into any module to power an engine of extensibility. 10 | 11 | #### Installing Piecemeal 12 | 13 | You can embed Piecemeal by using Install-Piecemeal: 14 | 15 | ```PowerShell 16 | Install-Piecemeal -ExtensionModuleName MyModule -Verb Get -OutputPath .\Get-MyModuleExtension.ps1 17 | ``` 18 | 19 | This will create the source for the command Get-MyModuleExtension. 20 | Get-MyModuleExtension is a modified copy of Get-Extension that returns only extensions related to MyModule. 21 | 22 | **NOTE: Your Module does not have to Require or Nest Piecemeal** 23 | 24 | #### Extending a Function 25 | 26 | Once Piecemeal has been installed into a module, you can allow any command to be extended with two easy optional steps: 27 | 28 | 1. Add dynamic parameters from extensions 29 | 30 | ```PowerShell 31 | # Add this block to any function to make the function extensible (change the name of the extension command as needed) 32 | dynamicParam { 33 | Get-MyModuleExtension -CommandName $MyInvocation.MyCommand -DynamicParameter 34 | } 35 | ``` 36 | 37 | 2. Run the extension 38 | 39 | 40 | By default, running your extension command will produce an object containing: 41 | * CommandName (the name of the command) 42 | * ExtensionCommand (the extension command) 43 | * ExtensionOutput (the output from the extension) 44 | * Done (indicates if you should stop processing additional extensions) 45 | 46 | ```PowerShell 47 | # Add this wherever you would like within the function you're extending. 48 | # This will return an object with the output of each extension 49 | Get-MyModuleExtension -Run -CommandName $MyInvocation.Mycommand 50 | ``` 51 | 52 | You can also run the extension and -Stream the results 53 | ```PowerShell 54 | # Add this wherever you would like within the function you're extending. 55 | # This will return an object with the output of each extension 56 | Get-MyModuleExtension -Run -Stream -CommandName $MyInvocation.Mycommand -Parameter (@{} + $psBoundParameters) 57 | ``` 58 | 59 | Alternatively, you can determine what -CouldRun: 60 | ```PowerShell 61 | # Add this wherever you would like within the function you're extending. 62 | # This will return an object with the output of each extension 63 | Get-MyModuleExtension -CouldRun -CommandName $MyInvocation.Mycommand -Parameter (@{} + $psBoundParameters) 64 | ``` 65 | 66 | Once you have completed these steps, your command can be extended. 67 | Extensions can exist within your module or any module that adds your module to it's tags. 68 | 69 | ### Extension Scripts Structure 70 | 71 | Extensions are simple scripts files named with the regular expression ```\.(extension|ext|ex|x)\.ps1$```. 72 | 73 | The often include the name of the module that contains the commands that are being extended, for example ```AudioGain.RoughDraft.Extension.ps1```. 74 | 75 | They can be automatically discovered in any module that adds the tag "Piecemeal", or can be discovered beneath an extension path. 76 | 77 | Extensions should include the following attributes above their parameter block: 78 | 79 | ~~~PowerShell 80 | # It's an extension (this is optional, unless you use -RequireExtensionAttribute) 81 | [Runtime.CompilerServices.Extension()] 82 | # Next one or more Cmdlet attribute define the command that is being extended. 83 | # (this is also optional, unless you use -RequireCmdletAttribute ) 84 | [Management.Automation.Cmdlet("Set","Something")] 85 | # Finally, an extension can indicate how it should be Inherited with the ComponentModel.Inheritance attribute. 86 | # An extension that is 'Inherited' should return control to the main function when it is done. This is the default 87 | # An extension that is 'NotInherited' should run and return directly. 88 | # An extension that is 'InheritedReadOnly' should only declare parameters 89 | [ComponentModel.Inheritance("Inherited")] 90 | param( 91 | # It's good practice to make at least one parameter of the extension should be mandatory. 92 | [Parameter(Mandatory)] 93 | [switch] 94 | $MyEditExtension 95 | ) 96 | ~~~ -------------------------------------------------------------------------------- /action.yml: -------------------------------------------------------------------------------- 1 | 2 | name: UsePiecemeal 3 | description: Add extensibility to any PowerShell module with Piecemeal 4 | inputs: 5 | PiecemealScript: 6 | required: false 7 | description: | 8 | A PowerShell Script that uses Piecemeal. 9 | Any files outputted from the script will be added to the repository. 10 | If those files have a .Message attached to them, they will be committed with that message. 11 | SkipPiecemealPS1: 12 | required: false 13 | description: 'If set, will not process any files named *.Piecemeal.ps1' 14 | ModuleName: 15 | required: false 16 | description: | 17 | The name of the module for which types and formats are being generated. 18 | If not provided, this will be assumed to be the name of the root directory. 19 | CommitMessage: 20 | required: false 21 | description: | 22 | If provided, will commit any remaining changes made to the workspace with this commit message. 23 | If no commit message is provided, changes will not be committed. 24 | UserEmail: 25 | required: false 26 | description: The user email associated with a git commit. 27 | UserName: 28 | required: false 29 | description: The user name associated with a git commit. 30 | branding: 31 | icon: terminal 32 | color: blue 33 | runs: 34 | using: composite 35 | steps: 36 | - name: PiecemealAction 37 | id: PiecemealAction 38 | shell: pwsh 39 | env: 40 | UserName: ${{inputs.UserName}} 41 | UserEmail: ${{inputs.UserEmail}} 42 | PiecemealScript: ${{inputs.PiecemealScript}} 43 | SkipPiecemealPS1: ${{inputs.SkipPiecemealPS1}} 44 | ModuleName: ${{inputs.ModuleName}} 45 | CommitMessage: ${{inputs.CommitMessage}} 46 | run: | 47 | $Parameters = @{} 48 | $Parameters.PiecemealScript = ${env:PiecemealScript} 49 | $Parameters.SkipPiecemealPS1 = ${env:SkipPiecemealPS1} 50 | $Parameters.SkipPiecemealPS1 = $parameters.SkipPiecemealPS1 -match 'true'; 51 | $Parameters.ModuleName = ${env:ModuleName} 52 | $Parameters.CommitMessage = ${env:CommitMessage} 53 | $Parameters.UserEmail = ${env:UserEmail} 54 | $Parameters.UserName = ${env:UserName} 55 | foreach ($k in @($parameters.Keys)) { 56 | if ([String]::IsNullOrEmpty($parameters[$k])) { 57 | $parameters.Remove($k) 58 | } 59 | } 60 | Write-Host "::debug:: PiecemealAction $(@(foreach ($p in $Parameters.GetEnumerator()) {'-' + $p.Key + ' ' + $p.Value}) -join ' ')" 61 | & {<# 62 | .Synopsis 63 | GitHub Action for Piecemeal 64 | .Description 65 | GitHub Action for Piecemeal. This will: 66 | 67 | * Import Piecemeal 68 | * Run all *.Piecemeal.ps1 files beneath the workflow directory 69 | * Run a .PiecemealScript parameter 70 | 71 | Any files changed can be outputted by the script, and those changes can be checked back into the repo. 72 | Make sure to use the "persistCredentials" option with checkout. 73 | #> 74 | 75 | param( 76 | # A PowerShell Script that uses Piecemeal. 77 | # Any files outputted from the script will be added to the repository. 78 | # If those files have a .Message attached to them, they will be committed with that message. 79 | [string] 80 | $PiecemealScript, 81 | 82 | # If set, will not process any files named *.Piecemeal.ps1 83 | [switch] 84 | $SkipPiecemealPS1, 85 | 86 | # The name of the module for which types and formats are being generated. 87 | # If not provided, this will be assumed to be the name of the root directory. 88 | [string] 89 | $ModuleName, 90 | 91 | # If provided, will commit any remaining changes made to the workspace with this commit message. 92 | # If no commit message is provided, changes will not be committed. 93 | [string] 94 | $CommitMessage, 95 | 96 | # The user email associated with a git commit. 97 | [string] 98 | $UserEmail, 99 | 100 | # The user name associated with a git commit. 101 | [string] 102 | $UserName 103 | ) 104 | 105 | "::group::Parameters" | Out-Host 106 | [PSCustomObject]$PSBoundParameters | Format-List | Out-Host 107 | "::endgroup::" | Out-Host 108 | 109 | 110 | $gitHubEvent = if ($env:GITHUB_EVENT_PATH) { 111 | [IO.File]::ReadAllText($env:GITHUB_EVENT_PATH) | ConvertFrom-Json 112 | } else { $null } 113 | 114 | @" 115 | ::group::GitHubEvent 116 | $($gitHubEvent | ConvertTo-Json -Depth 100) 117 | ::endgroup:: 118 | "@ | Out-Host 119 | 120 | $branchName = git rev-parse --abrev-ref HEAD 121 | if (-not $branchName) { 122 | return 123 | } 124 | 125 | if ($env:GITHUB_ACTION_PATH) { 126 | $PiecemealModulePath = Join-Path $env:GITHUB_ACTION_PATH 'Piecemeal.psd1' 127 | if (Test-path $PiecemealModulePath) { 128 | Import-Module $PiecemealModulePath -Force -PassThru | Out-String 129 | } else { 130 | throw "Piecemeal not found" 131 | } 132 | } elseif (-not (Get-Module Piecemeal)) { 133 | throw "Action Path not found" 134 | } 135 | 136 | "::notice title=ModuleLoaded::Piecemeal Loaded from Path - $($PiecemealModulePath)" | Out-Host 137 | 138 | $anyFilesChanged = $false 139 | $processScriptOutput = { process { 140 | $out = $_ 141 | $outItem = Get-Item -Path $out -ErrorAction SilentlyContinue 142 | $fullName, $shouldCommit = 143 | if ($out -is [IO.FileInfo]) { 144 | $out.FullName, (git status $out.Fullname -s) 145 | } elseif ($outItem) { 146 | $outItem.FullName, (git status $outItem.Fullname -s) 147 | } 148 | if ($shouldCommit) { 149 | git add $fullName 150 | if ($out.Message) { 151 | git commit -m "$($out.Message)" 152 | } elseif ($out.CommitMessage) { 153 | git commit -m "$($out.CommitMessage)" 154 | } elseif ($gitHubEvent.head_commit.message) { 155 | git commit -m "$($gitHubEvent.head_commit.message)" 156 | } 157 | $anyFilesChanged = $true 158 | } 159 | $out 160 | } } 161 | 162 | 163 | if (-not $UserName) { $UserName = $env:GITHUB_ACTOR } 164 | if (-not $UserEmail) { $UserEmail = "$UserName@github.com" } 165 | git config --global user.email $UserEmail 166 | git config --global user.name $UserName 167 | 168 | if (-not $env:GITHUB_WORKSPACE) { throw "No GitHub workspace" } 169 | 170 | git pull | Out-Host 171 | 172 | $PiecemealScriptStart = [DateTime]::Now 173 | if ($PiecemealScript) { 174 | Invoke-Expression -Command $PiecemealScript | 175 | . $processScriptOutput | 176 | Out-Host 177 | } 178 | $PiecemealScriptTook = [Datetime]::Now - $PiecemealScriptStart 179 | 180 | $PiecemealPS1Start = [DateTime]::Now 181 | $PiecemealPS1List = @() 182 | if (-not $SkipPiecemealPS1) { 183 | $PiecemealFiles = @( 184 | Get-ChildItem -Recurse -Path $env:GITHUB_WORKSPACE | 185 | Where-Object Name -Match '\.Piecemeal\.ps1$') 186 | 187 | if ($PiecemealFiles) { 188 | $PiecemealFiles| 189 | ForEach-Object { 190 | $PiecemealPS1List += $_.FullName.Replace($env:GITHUB_WORKSPACE, '').TrimStart('/') 191 | $PiecemealPS1Count++ 192 | "::notice title=Running::$($_.Fullname)" | Out-Host 193 | . $_.FullName | 194 | . $processScriptOutput | 195 | Out-Host 196 | } 197 | } 198 | } 199 | 200 | $PiecemealPS1EndStart = [DateTime]::Now 201 | $PiecemealPS1Took = [Datetime]::Now - $PiecemealPS1Start 202 | if ($CommitMessage -or $anyFilesChanged) { 203 | if ($CommitMessage) { 204 | dir $env:GITHUB_WORKSPACE -Recurse | 205 | ForEach-Object { 206 | $gitStatusOutput = git status $_.Fullname -s 207 | if ($gitStatusOutput) { 208 | git add $_.Fullname 209 | } 210 | } 211 | 212 | git commit -m $ExecutionContext.SessionState.InvokeCommand.ExpandString($CommitMessage) 213 | } 214 | 215 | $checkDetached = git symbolic-ref -q HEAD 216 | if (-not $LASTEXITCODE) { 217 | "::notice::Pushing Changes" | Out-Host 218 | git push 219 | "Git Push Output: $($gitPushed | Out-String)" 220 | } else { 221 | "::notice::Not pushing changes (on detached head)" | Out-Host 222 | $LASTEXITCODE = 0 223 | exit 0 224 | } 225 | } 226 | } @Parameters 227 | 228 | -------------------------------------------------------------------------------- /docs/2021-12-20.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2021/12/20/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2021 12 20" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2021-12-27.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2021/12/27/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2021 12 27" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2021-12.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2021/12/ 3 | --- 4 | {% assign currentYearMonth = "2021 12" %} 5 | {% for post in site.posts %} 6 | {% assign postYear = post.date | date: "%Y" %} 7 | {% assign postYearMonth = post.date | date: "%B [%Y](..)" %} 8 | {% assign postYM = post.date | date: "%Y %m" %} 9 | {% if postYM != currentYearMonth %} 10 | {% continue %} 11 | {% endif %} 12 | {% if hasDisplayedYearMonth != postYearMonth %} 13 | ## {{postYearMonth}} 14 | {% endif %} 15 | {% assign hasDisplayedYearMonth = postYearMonth %} 16 | * [ {{ post.title }} ]( {{ post.url }} ) 17 | {% endfor %} 18 | -------------------------------------------------------------------------------- /docs/2021.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2021/ 3 | --- 4 | {% assign currentYear = "2021" %} 5 | {% for post in site.posts %} 6 | {% assign postYear = post.date | date: "%Y" %} 7 | {% assign postYearMonth = post.date | date: "[%B](%m) %Y" %} 8 | {% if postYear != currentYear %} 9 | {% continue %} 10 | {% endif %} 11 | {% if hasDisplayedYear != postYear %} 12 | ## [{{postYear}}](.) 13 | {% endif %} 14 | {% assign hasDisplayedYear = postYear %} 15 | {% if hasDisplayedYearMonth != postYearMonth %} 16 | ### {{postYearMonth}} 17 | {% endif %} 18 | {% assign hasDisplayedYearMonth = postYearMonth %} 19 | * [ {{ post.title }} ]( {{ post.url }} ) 20 | {% endfor %} 21 | -------------------------------------------------------------------------------- /docs/2022-01-09.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/01/09/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 01 09" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-01.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/01/ 3 | --- 4 | {% assign currentYearMonth = "2022 01" %} 5 | {% for post in site.posts %} 6 | {% assign postYear = post.date | date: "%Y" %} 7 | {% assign postYearMonth = post.date | date: "%B [%Y](..)" %} 8 | {% assign postYM = post.date | date: "%Y %m" %} 9 | {% if postYM != currentYearMonth %} 10 | {% continue %} 11 | {% endif %} 12 | {% if hasDisplayedYearMonth != postYearMonth %} 13 | ## {{postYearMonth}} 14 | {% endif %} 15 | {% assign hasDisplayedYearMonth = postYearMonth %} 16 | * [ {{ post.title }} ]( {{ post.url }} ) 17 | {% endfor %} 18 | -------------------------------------------------------------------------------- /docs/2022-02-18.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/02/18/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 02 18" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-02-19.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/02/19/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 02 19" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-02.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/02/ 3 | --- 4 | {% assign currentYearMonth = "2022 02" %} 5 | {% for post in site.posts %} 6 | {% assign postYear = post.date | date: "%Y" %} 7 | {% assign postYearMonth = post.date | date: "%B [%Y](..)" %} 8 | {% assign postYM = post.date | date: "%Y %m" %} 9 | {% if postYM != currentYearMonth %} 10 | {% continue %} 11 | {% endif %} 12 | {% if hasDisplayedYearMonth != postYearMonth %} 13 | ## {{postYearMonth}} 14 | {% endif %} 15 | {% assign hasDisplayedYearMonth = postYearMonth %} 16 | * [ {{ post.title }} ]( {{ post.url }} ) 17 | {% endfor %} 18 | -------------------------------------------------------------------------------- /docs/2022-03-02.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/03/02/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 03 02" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-03-03.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/03/03/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 03 03" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-03-04.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/03/04/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 03 04" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-03-09.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/03/09/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 03 09" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-03-27.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/03/27/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 03 27" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-03.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/03/ 3 | --- 4 | {% assign currentYearMonth = "2022 03" %} 5 | {% for post in site.posts %} 6 | {% assign postYear = post.date | date: "%Y" %} 7 | {% assign postYearMonth = post.date | date: "%B [%Y](..)" %} 8 | {% assign postYM = post.date | date: "%Y %m" %} 9 | {% if postYM != currentYearMonth %} 10 | {% continue %} 11 | {% endif %} 12 | {% if hasDisplayedYearMonth != postYearMonth %} 13 | ## {{postYearMonth}} 14 | {% endif %} 15 | {% assign hasDisplayedYearMonth = postYearMonth %} 16 | * [ {{ post.title }} ]( {{ post.url }} ) 17 | {% endfor %} 18 | -------------------------------------------------------------------------------- /docs/2022-04-10.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/04/10/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 04 10" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-04-13.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/04/13/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 04 13" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-04-25.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/04/25/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 04 25" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-04-30.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/04/30/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 04 30" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-04.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/04/ 3 | --- 4 | {% assign currentYearMonth = "2022 04" %} 5 | {% for post in site.posts %} 6 | {% assign postYear = post.date | date: "%Y" %} 7 | {% assign postYearMonth = post.date | date: "%B [%Y](..)" %} 8 | {% assign postYM = post.date | date: "%Y %m" %} 9 | {% if postYM != currentYearMonth %} 10 | {% continue %} 11 | {% endif %} 12 | {% if hasDisplayedYearMonth != postYearMonth %} 13 | ## {{postYearMonth}} 14 | {% endif %} 15 | {% assign hasDisplayedYearMonth = postYearMonth %} 16 | * [ {{ post.title }} ]( {{ post.url }} ) 17 | {% endfor %} 18 | -------------------------------------------------------------------------------- /docs/2022-05-02.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/05/02/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 05 02" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-05-03.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/05/03/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 05 03" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-05-27.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/05/27/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 05 27" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-05.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/05/ 3 | --- 4 | {% assign currentYearMonth = "2022 05" %} 5 | {% for post in site.posts %} 6 | {% assign postYear = post.date | date: "%Y" %} 7 | {% assign postYearMonth = post.date | date: "%B [%Y](..)" %} 8 | {% assign postYM = post.date | date: "%Y %m" %} 9 | {% if postYM != currentYearMonth %} 10 | {% continue %} 11 | {% endif %} 12 | {% if hasDisplayedYearMonth != postYearMonth %} 13 | ## {{postYearMonth}} 14 | {% endif %} 15 | {% assign hasDisplayedYearMonth = postYearMonth %} 16 | * [ {{ post.title }} ]( {{ post.url }} ) 17 | {% endfor %} 18 | -------------------------------------------------------------------------------- /docs/2022-06-16.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/06/16/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 06 16" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-06-20.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/06/20/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 06 20" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-06-25.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/06/25/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 06 25" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-06-27.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/06/27/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 06 27" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-06.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/06/ 3 | --- 4 | {% assign currentYearMonth = "2022 06" %} 5 | {% for post in site.posts %} 6 | {% assign postYear = post.date | date: "%Y" %} 7 | {% assign postYearMonth = post.date | date: "%B [%Y](..)" %} 8 | {% assign postYM = post.date | date: "%Y %m" %} 9 | {% if postYM != currentYearMonth %} 10 | {% continue %} 11 | {% endif %} 12 | {% if hasDisplayedYearMonth != postYearMonth %} 13 | ## {{postYearMonth}} 14 | {% endif %} 15 | {% assign hasDisplayedYearMonth = postYearMonth %} 16 | * [ {{ post.title }} ]( {{ post.url }} ) 17 | {% endfor %} 18 | -------------------------------------------------------------------------------- /docs/2022-07-11.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/07/11/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 07 11" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-07.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/07/ 3 | --- 4 | {% assign currentYearMonth = "2022 07" %} 5 | {% for post in site.posts %} 6 | {% assign postYear = post.date | date: "%Y" %} 7 | {% assign postYearMonth = post.date | date: "%B [%Y](..)" %} 8 | {% assign postYM = post.date | date: "%Y %m" %} 9 | {% if postYM != currentYearMonth %} 10 | {% continue %} 11 | {% endif %} 12 | {% if hasDisplayedYearMonth != postYearMonth %} 13 | ## {{postYearMonth}} 14 | {% endif %} 15 | {% assign hasDisplayedYearMonth = postYearMonth %} 16 | * [ {{ post.title }} ]( {{ post.url }} ) 17 | {% endfor %} 18 | -------------------------------------------------------------------------------- /docs/2022-09-04.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/09/04/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 09 04" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-09-18.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/09/18/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 09 18" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-09.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/09/ 3 | --- 4 | {% assign currentYearMonth = "2022 09" %} 5 | {% for post in site.posts %} 6 | {% assign postYear = post.date | date: "%Y" %} 7 | {% assign postYearMonth = post.date | date: "%B [%Y](..)" %} 8 | {% assign postYM = post.date | date: "%Y %m" %} 9 | {% if postYM != currentYearMonth %} 10 | {% continue %} 11 | {% endif %} 12 | {% if hasDisplayedYearMonth != postYearMonth %} 13 | ## {{postYearMonth}} 14 | {% endif %} 15 | {% assign hasDisplayedYearMonth = postYearMonth %} 16 | * [ {{ post.title }} ]( {{ post.url }} ) 17 | {% endfor %} 18 | -------------------------------------------------------------------------------- /docs/2022-11-15.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/11/15/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 11 15" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-11-19.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/11/19/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2022 11 19" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2022-11.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/11/ 3 | --- 4 | {% assign currentYearMonth = "2022 11" %} 5 | {% for post in site.posts %} 6 | {% assign postYear = post.date | date: "%Y" %} 7 | {% assign postYearMonth = post.date | date: "%B [%Y](..)" %} 8 | {% assign postYM = post.date | date: "%Y %m" %} 9 | {% if postYM != currentYearMonth %} 10 | {% continue %} 11 | {% endif %} 12 | {% if hasDisplayedYearMonth != postYearMonth %} 13 | ## {{postYearMonth}} 14 | {% endif %} 15 | {% assign hasDisplayedYearMonth = postYearMonth %} 16 | * [ {{ post.title }} ]( {{ post.url }} ) 17 | {% endfor %} 18 | -------------------------------------------------------------------------------- /docs/2022.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2022/ 3 | --- 4 | {% assign currentYear = "2022" %} 5 | {% for post in site.posts %} 6 | {% assign postYear = post.date | date: "%Y" %} 7 | {% assign postYearMonth = post.date | date: "[%B](%m) %Y" %} 8 | {% if postYear != currentYear %} 9 | {% continue %} 10 | {% endif %} 11 | {% if hasDisplayedYear != postYear %} 12 | ## [{{postYear}}](.) 13 | {% endif %} 14 | {% assign hasDisplayedYear = postYear %} 15 | {% if hasDisplayedYearMonth != postYearMonth %} 16 | ### {{postYearMonth}} 17 | {% endif %} 18 | {% assign hasDisplayedYearMonth = postYearMonth %} 19 | * [ {{ post.title }} ]( {{ post.url }} ) 20 | {% endfor %} 21 | -------------------------------------------------------------------------------- /docs/2023-02-02.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2023/02/02/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2023 02 02" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2023-02.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2023/02/ 3 | --- 4 | {% assign currentYearMonth = "2023 02" %} 5 | {% for post in site.posts %} 6 | {% assign postYear = post.date | date: "%Y" %} 7 | {% assign postYearMonth = post.date | date: "%B [%Y](..)" %} 8 | {% assign postYM = post.date | date: "%Y %m" %} 9 | {% if postYM != currentYearMonth %} 10 | {% continue %} 11 | {% endif %} 12 | {% if hasDisplayedYearMonth != postYearMonth %} 13 | ## {{postYearMonth}} 14 | {% endif %} 15 | {% assign hasDisplayedYearMonth = postYearMonth %} 16 | * [ {{ post.title }} ]( {{ post.url }} ) 17 | {% endfor %} 18 | -------------------------------------------------------------------------------- /docs/2023-03-03.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2023/03/03/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2023 03 03" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2023-03-08.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2023/03/08/ 3 | --- 4 | {% for post in site.posts %} 5 | {% assign currentdate = post.date | date: "%Y %m %d" %} 6 | {% assign friendlydate = post.date | date: "[%B](..) [%d](.) [%Y](../..)" %} 7 | {% if currentdate != "2023 03 08" %} 8 | {% continue %} 9 | {% endif %} 10 | {% if currentdate != date %} 11 | ## {{friendlydate}} 12 | {% assign date = currentdate %} 13 | {% endif %} 14 | * [ {{ post.title }} ]( {{ post.url }} ) 15 | {% endfor %} 16 | -------------------------------------------------------------------------------- /docs/2023-03.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2023/03/ 3 | --- 4 | {% assign currentYearMonth = "2023 03" %} 5 | {% for post in site.posts %} 6 | {% assign postYear = post.date | date: "%Y" %} 7 | {% assign postYearMonth = post.date | date: "%B [%Y](..)" %} 8 | {% assign postYM = post.date | date: "%Y %m" %} 9 | {% if postYM != currentYearMonth %} 10 | {% continue %} 11 | {% endif %} 12 | {% if hasDisplayedYearMonth != postYearMonth %} 13 | ## {{postYearMonth}} 14 | {% endif %} 15 | {% assign hasDisplayedYearMonth = postYearMonth %} 16 | * [ {{ post.title }} ]( {{ post.url }} ) 17 | {% endfor %} 18 | -------------------------------------------------------------------------------- /docs/2023.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: /2023/ 3 | --- 4 | {% assign currentYear = "2023" %} 5 | {% for post in site.posts %} 6 | {% assign postYear = post.date | date: "%Y" %} 7 | {% assign postYearMonth = post.date | date: "[%B](%m) %Y" %} 8 | {% if postYear != currentYear %} 9 | {% continue %} 10 | {% endif %} 11 | {% if hasDisplayedYear != postYear %} 12 | ## [{{postYear}}](.) 13 | {% endif %} 14 | {% assign hasDisplayedYear = postYear %} 15 | {% if hasDisplayedYearMonth != postYearMonth %} 16 | ### {{postYearMonth}} 17 | {% endif %} 18 | {% assign hasDisplayedYearMonth = postYearMonth %} 19 | * [ {{ post.title }} ]( {{ post.url }} ) 20 | {% endfor %} 21 | -------------------------------------------------------------------------------- /docs/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## Piecemeal@0.4.1: 2 | 3 | * Enabling Sponsorship for Piecemeal (#139) 4 | * Improving -ExtensionName performance for Aliases (#141) 5 | * Tolerating lack of CommandMetaData (#124) 6 | 7 | --- 8 | 9 | ## Piecemeal@0.4: 10 | 11 | * Enabling Sponsorship for Piecemeal (#139) 12 | * Improving -ExtensionName performance (#138) 13 | * Not recursing when -ExtensionPath is local (#137) 14 | 15 | --- 16 | 17 | ## Piecemeal@0.3.10: 18 | ### Piecemeal Performance Improvements 19 | 20 | * Checking before extending objects (Fixes #134) 21 | * No Longer Allowing A Cmdlet to be an Extension (Fixes #133) 22 | * Improving the performance of .Extends/ .ExtensionCommands (Fixes #132) 23 | * Improving Terseness related performance (Fixes #131) 24 | * Caching Extensions from Files until the File Changes (Fixes #130) 25 | * Improving the performance of Get-Extension without -CommandName (Fixes #129) 26 | 27 | --- 28 | 29 | ## Piecemeal@0.3.9: 30 | 31 | * Allowing any command to be an extension! (Fixes #120) 32 | 33 | Functions, Cmdlets, and Aliases that meet the the naming convention will be seen as extensions by Get-Extension. 34 | 35 | In most cases, this allows extensions to be defined in memory or on disk. 36 | 37 | * Allowing .DisplayName to be set (Fixes #123) 38 | * Adding .CouldPipeType to all extensions (Fixes #121) 39 | * Not allowing a directories to be extensions (for now) (Fixes #125) 40 | * Not clearing an extension's .PSTypeNames (inserting instead) (Fixes #126) 41 | 42 | --- 43 | 44 | ## Piecemeal@0.3.8: 45 | 46 | * Adding .HasValidation to all extensions (Fixes #117) 47 | * All extension methods and properties are now prevalidated in case of collision (Fixes #118) 48 | 49 | --- 50 | 51 | ## Piecemeal@0.3.7: 52 | 53 | * Get-Extension: Stringifying input for ValidatePattern (Fixes #114) 54 | 55 | --- 56 | 57 | ## Piecemeal@0.3.6: 58 | 59 | * Get-Extension -CouldPipe can now handle PSTypeName attributes (Fixes #109) 60 | * Piecemeal action no longer produces output variables (Fixes #110) 61 | * Now Publishing with [GitPub](https://github.com/StartAutomating/GitPub) (Fixes #111) 62 | 63 | --- 64 | 65 | ## Piecemeal@0.3.5: 66 | * GitHub Action now checks if it is on a branch (Fixes #107) 67 | 68 | --- 69 | 70 | ## Piecemeal@0.3.4: 71 | * Get-Extension 72 | * Adding -Force (Fixes #103) 73 | * Caching allCommands (Fixes #104) 74 | * Only allowing Functions, Aliases, and Cmdlets to be extended (Fixes #105) 75 | 76 | --- 77 | 78 | ## Piecemeal@0.3.3: 79 | * Consolidating -Help parameters (#101) 80 | * Fixing .GetHelpField (#100) 81 | 82 | --- 83 | 84 | ## Piecemeal@0.3.2: 85 | * Piecemeal Available as a GitHub Action (#56) 86 | * Get-Extension: 87 | * Adding .BlockComments property (#96) 88 | * Fixing GetHelpField whitespace (#95) 89 | * Scoping GetHelpField matches to .BlockComments (#94) 90 | * Trimming leading whitespace from .Synopsis and .Description (#99) 91 | * Install-Piecemeal: 92 | * Returns a file when -OutputPath is passed (#97) 93 | 94 | --- 95 | 96 | ## Piecemeal@0.3.1: 97 | * Get-Extension: 98 | * New Properties/Methods for Each Extension 99 | * .Category (#89) 100 | * .GetHelpField() (#91) 101 | * .Examples (#87) 102 | * .Links (#88) 103 | * .Metadata (#90) 104 | * Removing -RequireExtensionAttribute (#92) 105 | 106 | --- 107 | 108 | ## Piecemeal@0.3.0: 109 | * Get-Extension: 110 | * Ensuring Regexes IgnoreCase (#85) 111 | * Trimming Trailing Whitepace from .Synopsis and .Description (#84) 112 | 113 | --- 114 | 115 | ## Piecemeal@0.2.9.1: 116 | * Fixing Get-Extension overcollection (#82) 117 | 118 | --- 119 | 120 | ## Piecemeal@0.2.9: 121 | * Get-Extension: 122 | * -CouldRun now honors validation attributes (#77) 123 | * -CouldPipe now honors validation attributes (#78) 124 | * -ExtensionName now supports Regex Literal Aliases ```[Alias(/Expression/)]``` (#80) 125 | * -CouldRun, -CouldPipe, -Validate are no longer mutually exclusive (#79) 126 | * Install-Piecemeal 127 | * Support for custom -WhereObject (#73) 128 | * Support for custom -ForeachObject (#74) 129 | 130 | --- 131 | 132 | ## Piecemeal@0.2.8 133 | * Get-Extension: 134 | * Performance Improvements (#75) 135 | * Regular Expressions now IgnorePatternWhitespace (#71) 136 | * -ExtensionPattern allows for multiple patterns (#70) 137 | * Allowing any command type (#65) 138 | * Install-Piecemeal: 139 | * Adding -RenameVariable (#72) 140 | * Automatically renaming parameters when -ExtensionNoun is provided (#60) 141 | 142 | --- 143 | 144 | ## Piecemeal@0.2.7 145 | * Get-Extension 146 | * Allowing any command type (#65) 147 | * Fixing -CouldPipe (#67) 148 | 149 | --- 150 | 151 | ## Piecemeal@0.2.6 152 | * Get-Extension: 153 | * Matching -ExtensionName support aliases (#63) 154 | * Matching -ExtensionName against .DisplayName or .Name (#61) 155 | * Get-Extension: -CouldPipe no longer cares about manadatory parameters (#62) 156 | 157 | --- 158 | 159 | ## Piecemeal@0.2.5 160 | * Get-Extension: Adding -CouldPipe (#58) 161 | * Get-Extension: Fixing .Tags based inclusion (#57) 162 | 163 | --- 164 | 165 | ## Piecemeal@0.2.4 166 | * Install-Piecemeal: Making -ExtensionModule Optional (#54) 167 | 168 | --- 169 | 170 | ## Piecemeal@0.2.3 171 | * Adding New-Extension (#51) 172 | * Generating Docs (#52) 173 | * Allowing New-Extension to be installed with Install-Piecemeal 174 | 175 | --- 176 | 177 | ## Piecemeal@0.2.2 178 | * Adding test for [ValidateScript] (#47) 179 | * Updating Piecemeal tests (checking validation order) (#48) 180 | * Get-Extension: Fixing -ValidateInput logic (#48) 181 | * Get-Extension: Fixing support for [ValidateScript] (#47) 182 | 183 | --- 184 | 185 | ## Piecemeal@0.2.1 186 | * Get-Extension: Support for -AllValid (#45) 187 | * Get-Extension: Removing Validation Errors when -ErrorAction is ignore (#43) 188 | * Updating Piecemeal tests: Adding test for Steppable Pipeline (#42) 189 | * Updating Piecemeal Formatting (making .Extends a list) (re #44) 190 | * Get-Extension: Support for SteppablePipelines (#42). Fixing .Extends bug (#44) 191 | 192 | --- 193 | 194 | ## Piecemeal@0.2 195 | * Adding formatting for extensions (#40) 196 | * Updating Piecemeal tests (account for Regex) (#39) 197 | * Get-Extension: Regex support for [Cmdlet] attribute (#39) 198 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) (#38) 199 | * Get-Extension: Adding -Help (#38) 200 | 201 | --- 202 | 203 | ## Piecemeal@0.1.10 204 | * Get-Extension: Adding -ParameterSetName (#36) 205 | * Install-Extension: Adding -Force to Import-Module in Install Note (#32) 206 | 207 | --- 208 | 209 | ## Piecemeal@0.1.9 210 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) (#31) 211 | 212 | --- 213 | 214 | ## Piecemeal@0.1.8 215 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (#31) 216 | * Install-Piecemeal: Improving Install Message (#32) 217 | 218 | --- 219 | 220 | ## Piecemeal@0.1.7 221 | * Get-Extension: Now inherits ParameterSetName (#28) 222 | * Get-Extension: Fixing issue properly displaying Valid Set (#29) 223 | 224 | --- 225 | 226 | ## Piecemeal@0.1.6 227 | * Get-Extension now supports all validation attributes (#26/#25) 228 | 229 | --- 230 | 231 | ## Piecemeal@0.1.5 232 | * Extensions are now Sortable (#19) 233 | * Get-Extension supports -ExtensionName (#20) 234 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern (#21) 235 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] (#22) 236 | 237 | --- 238 | 239 | ## Piecemeal@0.1.4 240 | * Get-Extension: 241 | * Can now filter extension parameters based off of command (#17) 242 | 243 | --- 244 | 245 | ## Piecemeal@0.1.3 246 | * Get-Extension: 247 | * Added -RequireExtensionAttribute (#13) 248 | * Added -RequireCmdletAttribute (#14) 249 | * Respecting [CmdletBinding(DefaultParameterSetName)] (#12) 250 | * Surfacing attributes (#11) 251 | * Install-Piecemeal: 252 | * Allowing customization of -ExtensionName (#10) 253 | * Making $script variables unique (#9) 254 | * Fixing issues on Core (#16) 255 | 256 | --- 257 | 258 | ## Piecemeal@0.1.2 259 | * Get-Extension: 260 | * Added -NoMandatoryDynamicParameter (#6 / #4) 261 | * [Parameter] attributes are now copied, so underlying commands are unchanged (#7) 262 | 263 | --- 264 | 265 | ## Piecemeal@0.1.1 266 | * Get-Extension: 267 | * -Parameter not accepts ValueFromPipelineByPropertyName (#2) 268 | * -CommandName now works (#3) 269 | * .GetDynamicParameters now supports -NoMandatory (#4) 270 | 271 | --- 272 | 273 | ## Piecemeal@0.1 274 | * Initial Release of Piecemeal 275 | 276 | --- 277 | -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | piecemeal.start-automating.com -------------------------------------------------------------------------------- /docs/Install-Piecemeal.md: -------------------------------------------------------------------------------- 1 | Install-Piecemeal 2 | ----------------- 3 | 4 | 5 | 6 | 7 | ### Synopsis 8 | Installs Piecemeal 9 | 10 | 11 | 12 | --- 13 | 14 | 15 | ### Description 16 | 17 | Installs Piecemeal into a module. 18 | 19 | This enables extensibility within the module. 20 | 21 | 22 | 23 | --- 24 | 25 | 26 | ### Related Links 27 | * [Get-Extension](Get-Extension.md) 28 | 29 | 30 | 31 | 32 | 33 | --- 34 | 35 | 36 | ### Examples 37 | #### EXAMPLE 1 38 | ```PowerShell 39 | Install-Piecemeal -ExtensionModule RoughDraft -ExtensionModuleAlias rd -ExtensionTypeName RoughDraft.Extension 40 | ``` 41 | 42 | #### EXAMPLE 2 43 | ```PowerShell 44 | 1{0,1})$','\.ps(?1{0,1})\.(?[^.]+$)','\.ps(?1{0,1})$' -OutputPath '.\Get-PipeScript.ps1' -RenameVariable @{ExtensionPath='PipeScriptPath'} 45 | ``` 46 | 47 | 48 | 49 | --- 50 | 51 | 52 | ### Parameters 53 | #### **ExtensionModule** 54 | 55 | The name of the module that is being extended. 56 | 57 | 58 | 59 | 60 | 61 | 62 | |Type |Required|Position|PipelineInput | 63 | |----------|--------|--------|---------------------| 64 | |`[String]`|false |1 |true (ByPropertyName)| 65 | 66 | 67 | 68 | #### **Verb** 69 | 70 | The verbs to install. By default, installs Get. 71 | 72 | 73 | 74 | Valid Values: 75 | 76 | * Get 77 | * New 78 | 79 | 80 | 81 | 82 | 83 | 84 | |Type |Required|Position|PipelineInput | 85 | |------------|--------|--------|---------------------| 86 | |`[String[]]`|false |2 |true (ByPropertyName)| 87 | 88 | 89 | 90 | #### **ExtensionModuleAlias** 91 | 92 | One or more aliases used to refer to the module being extended. 93 | 94 | 95 | 96 | 97 | 98 | 99 | |Type |Required|Position|PipelineInput | 100 | |------------|--------|--------|---------------------| 101 | |`[String[]]`|false |3 |true (ByPropertyName)| 102 | 103 | 104 | 105 | #### **ExtensionPattern** 106 | 107 | If provided, will override the default extension name regular expression 108 | (by default '(extension|ext|ex|x)\.ps1$' ) 109 | 110 | 111 | 112 | 113 | 114 | 115 | |Type |Required|Position|PipelineInput |Aliases | 116 | |------------|--------|--------|---------------------|----------------------------------------| 117 | |`[String[]]`|false |4 |true (ByPropertyName)|ExtensionNameRegEx
ExtensionPatterns| 118 | 119 | 120 | 121 | #### **ExtensionTypeName** 122 | 123 | The type name to add to an extension. This can be used to format the extension. 124 | 125 | 126 | 127 | 128 | 129 | 130 | |Type |Required|Position|PipelineInput | 131 | |----------|--------|--------|---------------------| 132 | |`[String]`|false |5 |true (ByPropertyName)| 133 | 134 | 135 | 136 | #### **ExtensionNoun** 137 | 138 | The noun used for any extension commands. 139 | 140 | 141 | 142 | 143 | 144 | 145 | |Type |Required|Position|PipelineInput | 146 | |----------|--------|--------|---------------------| 147 | |`[String]`|false |6 |true (ByPropertyName)| 148 | 149 | 150 | 151 | #### **RequireCmdletAttribute** 152 | 153 | If set, will require a [Management.Automation.Cmdlet] attribute to be considered an extension. 154 | This attribute can associate the extension with one or more commands. 155 | 156 | 157 | 158 | 159 | 160 | 161 | |Type |Required|Position|PipelineInput | 162 | |----------|--------|--------|---------------------| 163 | |`[Switch]`|false |named |true (ByPropertyName)| 164 | 165 | 166 | 167 | #### **OutputPath** 168 | 169 | The output path. 170 | If provided, contents will be written to the output path with Set-Content 171 | Otherwise, contents will be returned. 172 | 173 | 174 | 175 | 176 | 177 | 178 | |Type |Required|Position|PipelineInput | 179 | |----------|--------|--------|---------------------| 180 | |`[String]`|false |7 |true (ByPropertyName)| 181 | 182 | 183 | 184 | #### **RenameVariable** 185 | 186 | If provided, will rename variables. 187 | 188 | 189 | 190 | 191 | 192 | 193 | |Type |Required|Position|PipelineInput | 194 | |---------------|--------|--------|---------------------| 195 | |`[IDictionary]`|false |8 |true (ByPropertyName)| 196 | 197 | 198 | 199 | #### **ForeachObject** 200 | 201 | A custom Foreach-Object that will be appended to main pipelines within Get-Extension. 202 | 203 | 204 | 205 | 206 | 207 | 208 | |Type |Required|Position|PipelineInput| 209 | |-----------------|--------|--------|-------------| 210 | |`[ScriptBlock[]]`|false |9 |false | 211 | 212 | 213 | 214 | #### **WhereObject** 215 | 216 | A custom Where-Object that will be injected to the main pipelines within Get-Extension 217 | 218 | 219 | 220 | 221 | 222 | 223 | |Type |Required|Position|PipelineInput| 224 | |-----------------|--------|--------|-------------| 225 | |`[ScriptBlock[]]`|false |10 |false | 226 | 227 | 228 | 229 | 230 | 231 | --- 232 | 233 | 234 | ### Outputs 235 | * [String](https://learn.microsoft.com/en-us/dotnet/api/System.String) 236 | 237 | 238 | * [IO.FileInfo](https://learn.microsoft.com/en-us/dotnet/api/System.IO.FileInfo) 239 | 240 | 241 | 242 | 243 | 244 | 245 | --- 246 | 247 | 248 | ### Notes 249 | This returns a modified Get-Extension 250 | 251 | 252 | 253 | --- 254 | 255 | 256 | ### Syntax 257 | ```PowerShell 258 | Install-Piecemeal [[-ExtensionModule] ] [[-Verb] ] [[-ExtensionModuleAlias] ] [[-ExtensionPattern] ] [[-ExtensionTypeName] ] [[-ExtensionNoun] ] [-RequireCmdletAttribute] [[-OutputPath] ] [[-RenameVariable] ] [[-ForeachObject] ] [[-WhereObject] ] [] 259 | ``` 260 | -------------------------------------------------------------------------------- /docs/New-Extension.md: -------------------------------------------------------------------------------- 1 | New-Extension 2 | ------------- 3 | 4 | 5 | 6 | 7 | ### Synopsis 8 | Creates an Extension 9 | 10 | 11 | 12 | --- 13 | 14 | 15 | ### Description 16 | 17 | Creates an Extension 18 | 19 | 20 | 21 | --- 22 | 23 | 24 | ### Related Links 25 | * [Get-Extension](Get-Extension.md) 26 | 27 | 28 | 29 | 30 | 31 | --- 32 | 33 | 34 | ### Examples 35 | #### EXAMPLE 1 36 | ```PowerShell 37 | New-Extension -ExtensionName MyExtension -CommandName New-Extension -ScriptBlock { 38 | [ValidateScript({return $true})] 39 | param() 40 | "Hello World" 41 | } 42 | ``` 43 | 44 | 45 | 46 | --- 47 | 48 | 49 | ### Parameters 50 | #### **ExtensionName** 51 | 52 | The name of the extension 53 | 54 | 55 | 56 | 57 | 58 | 59 | |Type |Required|Position|PipelineInput |Aliases| 60 | |----------|--------|--------|---------------------|-------| 61 | |`[String]`|false |1 |true (ByPropertyName)|Name | 62 | 63 | 64 | 65 | #### **ScriptBlock** 66 | 67 | 68 | 69 | 70 | |Type |Required|Position|PipelineInput |Aliases | 71 | |---------------|--------|--------|---------------------|-----------------------------| 72 | |`[ScriptBlock]`|false |2 |true (ByPropertyName)|ScriptContents
Definition| 73 | 74 | 75 | 76 | #### **CommandName** 77 | 78 | One or more commands being extended. 79 | 80 | 81 | 82 | 83 | 84 | 85 | |Type |Required|Position|PipelineInput | 86 | |------------|--------|--------|---------------------| 87 | |`[String[]]`|false |3 |true (ByPropertyName)| 88 | 89 | 90 | 91 | #### **ExtensionModule** 92 | 93 | The extension module. If provided, this will have to prefix the ExtensionNameRegex 94 | 95 | 96 | 97 | 98 | 99 | 100 | |Type |Required|Position|PipelineInput | 101 | |----------|--------|--------|---------------------| 102 | |`[String]`|false |4 |true (ByPropertyName)| 103 | 104 | 105 | 106 | #### **ExtensionParameter** 107 | 108 | A collection of Extension Parameters. 109 | The key is the name of the parameter. The value is any parameter type or attributes. 110 | 111 | 112 | 113 | 114 | 115 | 116 | |Type |Required|Position|PipelineInput | 117 | |---------------|--------|--------|---------------------| 118 | |`[IDictionary]`|false |5 |true (ByPropertyName)| 119 | 120 | 121 | 122 | #### **ExtensionParameterHelp** 123 | 124 | A collection of Extension Parameter Help. 125 | 126 | 127 | 128 | 129 | 130 | 131 | |Type |Required|Position|PipelineInput | 132 | |---------------|--------|--------|---------------------| 133 | |`[IDictionary]`|false |6 |true (ByPropertyName)| 134 | 135 | 136 | 137 | #### **ExtensionCommandType** 138 | 139 | The type of the extension command. By default, this is a script. 140 | 141 | 142 | 143 | Valid Values: 144 | 145 | * Script 146 | * Function 147 | * Filter 148 | 149 | 150 | 151 | 152 | 153 | 154 | |Type |Required|Position|PipelineInput | 155 | |----------|--------|--------|---------------------| 156 | |`[String]`|false |7 |true (ByPropertyName)| 157 | 158 | 159 | 160 | #### **ExtensionSynopsis** 161 | 162 | The synopsis used for the extension. 163 | 164 | 165 | 166 | 167 | 168 | 169 | |Type |Required|Position|PipelineInput | 170 | |----------|--------|--------|---------------------| 171 | |`[String]`|false |8 |true (ByPropertyName)| 172 | 173 | 174 | 175 | #### **ExtensionLink** 176 | 177 | Any help links for the extension. 178 | 179 | 180 | 181 | 182 | 183 | 184 | |Type |Required|Position|PipelineInput | 185 | |------------|--------|--------|---------------------| 186 | |`[String[]]`|false |9 |true (ByPropertyName)| 187 | 188 | 189 | 190 | #### **ExtensionExample** 191 | 192 | 193 | 194 | 195 | |Type |Required|Position|PipelineInput | 196 | |------------|--------|--------|---------------------| 197 | |`[String[]]`|false |10 |true (ByPropertyName)| 198 | 199 | 200 | 201 | 202 | 203 | --- 204 | 205 | 206 | ### Notes 207 | At this time, New-Extension assumes that it is not generating an indented script. 208 | 209 | 210 | 211 | --- 212 | 213 | 214 | ### Syntax 215 | ```PowerShell 216 | New-Extension [[-ExtensionName] ] [[-ScriptBlock] ] [[-CommandName] ] [[-ExtensionModule] ] [[-ExtensionParameter] ] [[-ExtensionParameterHelp] ] [[-ExtensionCommandType] ] [[-ExtensionSynopsis] ] [[-ExtensionLink] ] [[-ExtensionExample] ] [] 217 | ``` 218 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | Piecemeal enables Easy Extensible Plugins for PowerShell. 2 | 3 | ## What is Piecemeal? 4 | 5 | Piecemeal is a little PowerShell module that helps solve a big problem: PowerShell extensibility. 6 | 7 | Piecemeal allows function and scripts to have extended capabilities and act as extensions for any command. 8 | 9 | Piecemeal standardizes these capabilities and provides a simple function you can embed into any module to power an engine of extensibility. 10 | 11 | #### Installing Piecemeal 12 | 13 | You can embed Piecemeal by using Install-Piecemeal: 14 | 15 | ```PowerShell 16 | Install-Piecemeal -ExtensionModuleName MyModule -Verb Get -OutputPath .\Get-MyModuleExtension.ps1 17 | ``` 18 | 19 | This will create the source for the command Get-MyModuleExtension. 20 | Get-MyModuleExtension is a modified copy of Get-Extension that returns only extensions related to MyModule. 21 | 22 | **NOTE: Your Module does not have to Require or Nest Piecemeal** 23 | 24 | #### Extending a Function 25 | 26 | Once Piecemeal has been installed into a module, you can allow any command to be extended with two easy optional steps: 27 | 28 | 1. Add dynamic parameters from extensions 29 | 30 | ```PowerShell 31 | # Add this block to any function to make the function extensible (change the name of the extension command as needed) 32 | dynamicParam { 33 | Get-MyModuleExtension -CommandName $MyInvocation.MyCommand -DynamicParameter 34 | } 35 | ``` 36 | 37 | 2. Run the extension 38 | 39 | 40 | By default, running your extension command will produce an object containing: 41 | * CommandName (the name of the command) 42 | * ExtensionCommand (the extension command) 43 | * ExtensionOutput (the output from the extension) 44 | * Done (indicates if you should stop processing additional extensions) 45 | 46 | ```PowerShell 47 | # Add this wherever you would like within the function you're extending. 48 | # This will return an object with the output of each extension 49 | Get-MyModuleExtension -Run -CommandName $MyInvocation.Mycommand 50 | ``` 51 | 52 | You can also run the extension and -Stream the results 53 | ```PowerShell 54 | # Add this wherever you would like within the function you're extending. 55 | # This will return an object with the output of each extension 56 | Get-MyModuleExtension -Run -Stream -CommandName $MyInvocation.Mycommand -Parameter (@{} + $psBoundParameters) 57 | ``` 58 | 59 | Alternatively, you can determine what -CouldRun: 60 | ```PowerShell 61 | # Add this wherever you would like within the function you're extending. 62 | # This will return an object with the output of each extension 63 | Get-MyModuleExtension -CouldRun -CommandName $MyInvocation.Mycommand -Parameter (@{} + $psBoundParameters) 64 | ``` 65 | 66 | Once you have completed these steps, your command can be extended. 67 | Extensions can exist within your module or any module that adds your module to it's tags. 68 | 69 | ### Extension Scripts Structure 70 | 71 | Extensions are simple scripts files named with the regular expression ```\.(extension|ext|ex|x)\.ps1$```. 72 | 73 | The often include the name of the module that contains the commands that are being extended, for example ```AudioGain.RoughDraft.Extension.ps1```. 74 | 75 | They can be automatically discovered in any module that adds the tag "Piecemeal", or can be discovered beneath an extension path. 76 | 77 | Extensions should include the following attributes above their parameter block: 78 | 79 | ~~~PowerShell 80 | # It's an extension (this is optional, unless you use -RequireExtensionAttribute) 81 | [Runtime.CompilerServices.Extension()] 82 | # Next one or more Cmdlet attribute define the command that is being extended. 83 | # (this is also optional, unless you use -RequireCmdletAttribute ) 84 | [Management.Automation.Cmdlet("Set","Something")] 85 | # Finally, an extension can indicate how it should be Inherited with the ComponentModel.Inheritance attribute. 86 | # An extension that is 'Inherited' should return control to the main function when it is done. This is the default 87 | # An extension that is 'NotInherited' should run and return directly. 88 | # An extension that is 'InheritedReadOnly' should only declare parameters 89 | [ComponentModel.Inheritance("Inherited")] 90 | param( 91 | # It's good practice to make at least one parameter of the extension should be mandatory. 92 | [Parameter(Mandatory)] 93 | [switch] 94 | $MyEditExtension 95 | ) 96 | ~~~ 97 | -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-midnight -------------------------------------------------------------------------------- /docs/_posts/2021-12-20-Piecemeal-0.1.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.1 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.1 5 | tag: release 6 | --- 7 | ## 0.1 8 | --- 9 | * Initial Release of Piecemeal 10 | -------------------------------------------------------------------------------- /docs/_posts/2021-12-27-Piecemeal-0.1.1.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.1.1 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.1.1 5 | tag: release 6 | --- 7 | ## 0.1.1 8 | --- 9 | * Get-Extension: 10 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 11 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 12 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 13 | 14 | ## 0.1 15 | --- 16 | * Initial Release of Piecemeal 17 | 18 | -------------------------------------------------------------------------------- /docs/_posts/2022-01-09-Piecemeal-0.1.2.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.1.2 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.1.2 5 | tag: release 6 | --- 7 | ## 0.1.2 8 | --- 9 | * Get-Extension: 10 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 11 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 12 | 13 | ## 0.1.1 14 | --- 15 | * Get-Extension: 16 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 17 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 18 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 19 | 20 | ## 0.1 21 | --- 22 | * Initial Release of Piecemeal 23 | 24 | -------------------------------------------------------------------------------- /docs/_posts/2022-02-18-Piecemeal-0.1.3.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.1.3 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.1.3 5 | tag: release 6 | --- 7 | ## 0.1.3 8 | --- 9 | * Get-Extension: 10 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 11 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 12 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 13 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 14 | * Install-Piecemeal: 15 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 16 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 17 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 18 | 19 | ## 0.1.2 20 | --- 21 | * Get-Extension: 22 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 23 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 24 | 25 | ## 0.1.1 26 | --- 27 | * Get-Extension: 28 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 29 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 30 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 31 | 32 | ## 0.1 33 | --- 34 | * Initial Release of Piecemeal 35 | 36 | -------------------------------------------------------------------------------- /docs/_posts/2022-02-19-Piecemeal-0.1.4.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.1.4 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.1.4 5 | tag: release 6 | --- 7 | ## 0.1.4 8 | --- 9 | * Get-Extension: 10 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 11 | 12 | ## 0.1.3 13 | --- 14 | * Get-Extension: 15 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 16 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 17 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 18 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 19 | * Install-Piecemeal: 20 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 21 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 22 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 23 | 24 | ## 0.1.2 25 | --- 26 | * Get-Extension: 27 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 28 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 29 | 30 | ## 0.1.1 31 | --- 32 | * Get-Extension: 33 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 34 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 35 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 36 | 37 | ## 0.1 38 | --- 39 | * Initial Release of Piecemeal 40 | 41 | -------------------------------------------------------------------------------- /docs/_posts/2022-03-02-Piecemeal-0.1.5.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.1.5 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.1.5 5 | tag: release 6 | --- 7 | ## 0.1.5 8 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 9 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 10 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 11 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 12 | --- 13 | ## 0.1.4 14 | * Get-Extension: 15 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 16 | --- 17 | 18 | ## 0.1.3 19 | * Get-Extension: 20 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 21 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 22 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 23 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 24 | * Install-Piecemeal: 25 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 26 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 27 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 28 | --- 29 | ## 0.1.2 30 | * Get-Extension: 31 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 32 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 33 | --- 34 | ## 0.1.1 35 | * Get-Extension: 36 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 37 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 38 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 39 | --- 40 | ## 0.1 41 | * Initial Release of Piecemeal 42 | --- 43 | -------------------------------------------------------------------------------- /docs/_posts/2022-03-03-Piecemeal-0.1.6.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.1.6 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.1.6 5 | tag: release 6 | --- 7 | # 0.1.6 8 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 9 | --- 10 | ## 0.1.5 11 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 12 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 13 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 14 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 15 | --- 16 | ## 0.1.4 17 | * Get-Extension: 18 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 19 | --- 20 | 21 | ## 0.1.3 22 | * Get-Extension: 23 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 24 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 25 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 26 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 27 | * Install-Piecemeal: 28 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 29 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 30 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 31 | --- 32 | ## 0.1.2 33 | * Get-Extension: 34 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 35 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 36 | --- 37 | ## 0.1.1 38 | * Get-Extension: 39 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 40 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 41 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 42 | --- 43 | ## 0.1 44 | * Initial Release of Piecemeal 45 | --- 46 | -------------------------------------------------------------------------------- /docs/_posts/2022-03-04-Piecemeal-0.1.7.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.1.7 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.1.7 5 | tag: release 6 | --- 7 | # 0.1.7 8 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 9 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 10 | --- 11 | # 0.1.6 12 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 13 | --- 14 | ## 0.1.5 15 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 16 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 17 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 18 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 19 | --- 20 | ## 0.1.4 21 | * Get-Extension: 22 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 23 | --- 24 | 25 | ## 0.1.3 26 | * Get-Extension: 27 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 28 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 29 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 30 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 31 | * Install-Piecemeal: 32 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 33 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 34 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 35 | --- 36 | ## 0.1.2 37 | * Get-Extension: 38 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 39 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 40 | --- 41 | ## 0.1.1 42 | * Get-Extension: 43 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 44 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 45 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 46 | --- 47 | ## 0.1 48 | * Initial Release of Piecemeal 49 | --- 50 | -------------------------------------------------------------------------------- /docs/_posts/2022-03-04-Piecemeal-0.1.8.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.1.8 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.1.8 5 | tag: release 6 | --- 7 | ## 0.1.8 8 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 9 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 10 | --- 11 | ## 0.1.7 12 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 13 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 14 | --- 15 | ## 0.1.6 16 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 17 | --- 18 | ## 0.1.5 19 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 20 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 21 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 22 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 23 | --- 24 | ## 0.1.4 25 | * Get-Extension: 26 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 27 | --- 28 | 29 | ## 0.1.3 30 | * Get-Extension: 31 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 32 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 33 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 34 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 35 | * Install-Piecemeal: 36 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 37 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 38 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 39 | --- 40 | ## 0.1.2 41 | * Get-Extension: 42 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 43 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 44 | --- 45 | ## 0.1.1 46 | * Get-Extension: 47 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 48 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 49 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 50 | --- 51 | ## 0.1 52 | * Initial Release of Piecemeal 53 | --- 54 | -------------------------------------------------------------------------------- /docs/_posts/2022-03-04-Piecemeal-0.1.9.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.1.9 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.1.9 5 | tag: release 6 | --- 7 | ## 0.1.9 8 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 9 | --- 10 | 11 | ## 0.1.8 12 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 13 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 14 | --- 15 | ## 0.1.7 16 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 17 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 18 | --- 19 | ## 0.1.6 20 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 21 | --- 22 | ## 0.1.5 23 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 24 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 25 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 26 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 27 | --- 28 | ## 0.1.4 29 | * Get-Extension: 30 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 31 | --- 32 | 33 | ## 0.1.3 34 | * Get-Extension: 35 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 36 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 37 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 38 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 39 | * Install-Piecemeal: 40 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 41 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 42 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 43 | --- 44 | ## 0.1.2 45 | * Get-Extension: 46 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 47 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 48 | --- 49 | ## 0.1.1 50 | * Get-Extension: 51 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 52 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 53 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 54 | --- 55 | ## 0.1 56 | * Initial Release of Piecemeal 57 | --- 58 | -------------------------------------------------------------------------------- /docs/_posts/2022-03-09-Piecemeal-0.1.10.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.1.10 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.1.10 5 | tag: release 6 | --- 7 | ## 0.1.10 8 | * Get-Extension: Adding -ParameterSetName ([#36](https://github.com/StartAutomating/Piecemeal/issues/36)) 9 | * Install-Extension: Adding -Force to Import-Module in Install Note ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 10 | --- 11 | 12 | ## 0.1.9 13 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 14 | --- 15 | 16 | ## 0.1.8 17 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 18 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 19 | --- 20 | ## 0.1.7 21 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 22 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 23 | --- 24 | ## 0.1.6 25 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 26 | --- 27 | ## 0.1.5 28 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 29 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 30 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 31 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 32 | --- 33 | ## 0.1.4 34 | * Get-Extension: 35 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 36 | --- 37 | 38 | ## 0.1.3 39 | * Get-Extension: 40 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 41 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 42 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 43 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 44 | * Install-Piecemeal: 45 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 46 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 47 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 48 | --- 49 | ## 0.1.2 50 | * Get-Extension: 51 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 52 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 53 | --- 54 | ## 0.1.1 55 | * Get-Extension: 56 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 57 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 58 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 59 | --- 60 | ## 0.1 61 | * Initial Release of Piecemeal 62 | --- 63 | -------------------------------------------------------------------------------- /docs/_posts/2022-03-27-Piecemeal-0.2.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.2 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.2 5 | tag: release 6 | --- 7 | ## 0.2 8 | * Adding formatting for extensions ([#40](https://github.com/StartAutomating/Piecemeal/issues/40)) 9 | * Updating Piecemeal tests (account for Regex) ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 10 | * Get-Extension: Regex support for [Cmdlet] attribute ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 11 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 12 | * Get-Extension: Adding -Help ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 13 | --- 14 | 15 | ## 0.1.10 16 | * Get-Extension: Adding -ParameterSetName ([#36](https://github.com/StartAutomating/Piecemeal/issues/36)) 17 | * Install-Extension: Adding -Force to Import-Module in Install Note ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 18 | --- 19 | 20 | ## 0.1.9 21 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 22 | --- 23 | 24 | ## 0.1.8 25 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 26 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 27 | --- 28 | ## 0.1.7 29 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 30 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 31 | --- 32 | ## 0.1.6 33 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 34 | --- 35 | ## 0.1.5 36 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 37 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 38 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 39 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 40 | --- 41 | ## 0.1.4 42 | * Get-Extension: 43 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 44 | --- 45 | 46 | ## 0.1.3 47 | * Get-Extension: 48 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 49 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 50 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 51 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 52 | * Install-Piecemeal: 53 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 54 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 55 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 56 | --- 57 | ## 0.1.2 58 | * Get-Extension: 59 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 60 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 61 | --- 62 | ## 0.1.1 63 | * Get-Extension: 64 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 65 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 66 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 67 | --- 68 | ## 0.1 69 | * Initial Release of Piecemeal 70 | --- 71 | -------------------------------------------------------------------------------- /docs/_posts/2022-04-10-Piecemeal-0.2.1.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.2.1 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.2.1 5 | tag: release 6 | --- 7 | ## 0.2.1 8 | * Get-Extension: Support for -AllValid ([#45](https://github.com/StartAutomating/Piecemeal/issues/45)) 9 | * Get-Extension: Removing Validation Errors when -ErrorAction is ignore ([#43](https://github.com/StartAutomating/Piecemeal/issues/43)) 10 | * Updating Piecemeal tests: Adding test for Steppable Pipeline ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)) 11 | * Updating Piecemeal Formatting (making .Extends a list) (re [#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 12 | * Get-Extension: Support for SteppablePipelines ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)). Fixing .Extends bug ([#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 13 | --- 14 | ## 0.2 15 | * Adding formatting for extensions ([#40](https://github.com/StartAutomating/Piecemeal/issues/40)) 16 | * Updating Piecemeal tests (account for Regex) ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 17 | * Get-Extension: Regex support for [Cmdlet] attribute ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 18 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 19 | * Get-Extension: Adding -Help ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 20 | --- 21 | 22 | ## 0.1.10 23 | * Get-Extension: Adding -ParameterSetName ([#36](https://github.com/StartAutomating/Piecemeal/issues/36)) 24 | * Install-Extension: Adding -Force to Import-Module in Install Note ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 25 | --- 26 | 27 | ## 0.1.9 28 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 29 | --- 30 | 31 | ## 0.1.8 32 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 33 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 34 | --- 35 | ## 0.1.7 36 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 37 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 38 | --- 39 | ## 0.1.6 40 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 41 | --- 42 | ## 0.1.5 43 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 44 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 45 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 46 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 47 | --- 48 | ## 0.1.4 49 | * Get-Extension: 50 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 51 | --- 52 | 53 | ## 0.1.3 54 | * Get-Extension: 55 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 56 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 57 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 58 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 59 | * Install-Piecemeal: 60 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 61 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 62 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 63 | --- 64 | ## 0.1.2 65 | * Get-Extension: 66 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 67 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 68 | --- 69 | ## 0.1.1 70 | * Get-Extension: 71 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 72 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 73 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 74 | --- 75 | ## 0.1 76 | * Initial Release of Piecemeal 77 | --- 78 | -------------------------------------------------------------------------------- /docs/_posts/2022-04-13-Piecemeal-0.2.2.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.2.2 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.2.2 5 | tag: release 6 | --- 7 | ## 0.2.2 8 | * Adding test for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 9 | * Updating Piecemeal tests (checking validation order) ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 10 | * Get-Extension: Fixing -ValidateInput logic ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 11 | * Get-Extension: Fixing support for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 12 | --- 13 | 14 | ## 0.2.1 15 | * Get-Extension: Support for -AllValid ([#45](https://github.com/StartAutomating/Piecemeal/issues/45)) 16 | * Get-Extension: Removing Validation Errors when -ErrorAction is ignore ([#43](https://github.com/StartAutomating/Piecemeal/issues/43)) 17 | * Updating Piecemeal tests: Adding test for Steppable Pipeline ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)) 18 | * Updating Piecemeal Formatting (making .Extends a list) (re [#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 19 | * Get-Extension: Support for SteppablePipelines ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)). Fixing .Extends bug ([#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 20 | --- 21 | ## 0.2 22 | * Adding formatting for extensions ([#40](https://github.com/StartAutomating/Piecemeal/issues/40)) 23 | * Updating Piecemeal tests (account for Regex) ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 24 | * Get-Extension: Regex support for [Cmdlet] attribute ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 25 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 26 | * Get-Extension: Adding -Help ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 27 | --- 28 | 29 | ## 0.1.10 30 | * Get-Extension: Adding -ParameterSetName ([#36](https://github.com/StartAutomating/Piecemeal/issues/36)) 31 | * Install-Extension: Adding -Force to Import-Module in Install Note ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 32 | --- 33 | 34 | ## 0.1.9 35 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 36 | --- 37 | 38 | ## 0.1.8 39 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 40 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 41 | --- 42 | ## 0.1.7 43 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 44 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 45 | --- 46 | ## 0.1.6 47 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 48 | --- 49 | ## 0.1.5 50 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 51 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 52 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 53 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 54 | --- 55 | ## 0.1.4 56 | * Get-Extension: 57 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 58 | --- 59 | 60 | ## 0.1.3 61 | * Get-Extension: 62 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 63 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 64 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 65 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 66 | * Install-Piecemeal: 67 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 68 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 69 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 70 | --- 71 | ## 0.1.2 72 | * Get-Extension: 73 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 74 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 75 | --- 76 | ## 0.1.1 77 | * Get-Extension: 78 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 79 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 80 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 81 | --- 82 | ## 0.1 83 | * Initial Release of Piecemeal 84 | --- 85 | -------------------------------------------------------------------------------- /docs/_posts/2022-04-25-Piecemeal-0.2.3.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.2.3 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.2.3 5 | tag: release 6 | --- 7 | ## 0.2.3 8 | * Adding New-Extension ([#51](https://github.com/StartAutomating/Piecemeal/issues/51)) 9 | * Generating Docs ([#52](https://github.com/StartAutomating/Piecemeal/issues/52)) 10 | * Allowing New-Extension to be installed with Install-Piecemeal 11 | --- 12 | 13 | ## 0.2.2 14 | * Adding test for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 15 | * Updating Piecemeal tests (checking validation order) ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 16 | * Get-Extension: Fixing -ValidateInput logic ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 17 | * Get-Extension: Fixing support for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 18 | --- 19 | 20 | ## 0.2.1 21 | * Get-Extension: Support for -AllValid ([#45](https://github.com/StartAutomating/Piecemeal/issues/45)) 22 | * Get-Extension: Removing Validation Errors when -ErrorAction is ignore ([#43](https://github.com/StartAutomating/Piecemeal/issues/43)) 23 | * Updating Piecemeal tests: Adding test for Steppable Pipeline ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)) 24 | * Updating Piecemeal Formatting (making .Extends a list) (re [#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 25 | * Get-Extension: Support for SteppablePipelines ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)). Fixing .Extends bug ([#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 26 | --- 27 | ## 0.2 28 | * Adding formatting for extensions ([#40](https://github.com/StartAutomating/Piecemeal/issues/40)) 29 | * Updating Piecemeal tests (account for Regex) ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 30 | * Get-Extension: Regex support for [Cmdlet] attribute ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 31 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 32 | * Get-Extension: Adding -Help ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 33 | --- 34 | 35 | ## 0.1.10 36 | * Get-Extension: Adding -ParameterSetName ([#36](https://github.com/StartAutomating/Piecemeal/issues/36)) 37 | * Install-Extension: Adding -Force to Import-Module in Install Note ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 38 | --- 39 | 40 | ## 0.1.9 41 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 42 | --- 43 | 44 | ## 0.1.8 45 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 46 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 47 | --- 48 | ## 0.1.7 49 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 50 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 51 | --- 52 | ## 0.1.6 53 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 54 | --- 55 | ## 0.1.5 56 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 57 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 58 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 59 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 60 | --- 61 | ## 0.1.4 62 | * Get-Extension: 63 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 64 | --- 65 | 66 | ## 0.1.3 67 | * Get-Extension: 68 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 69 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 70 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 71 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 72 | * Install-Piecemeal: 73 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 74 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 75 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 76 | --- 77 | ## 0.1.2 78 | * Get-Extension: 79 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 80 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 81 | --- 82 | ## 0.1.1 83 | * Get-Extension: 84 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 85 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 86 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 87 | --- 88 | ## 0.1 89 | * Initial Release of Piecemeal 90 | --- 91 | -------------------------------------------------------------------------------- /docs/_posts/2022-04-30-Piecemeal-0.2.4.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.2.4 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.2.4 5 | tag: release 6 | --- 7 | ## 0.2.4 8 | * Install-Piecemeal: Making -ExtensionModule Optional ([#54](https://github.com/StartAutomating/Piecemeal/issues/54)) 9 | --- 10 | ## 0.2.3 11 | * Adding New-Extension ([#51](https://github.com/StartAutomating/Piecemeal/issues/51)) 12 | * Generating Docs ([#52](https://github.com/StartAutomating/Piecemeal/issues/52)) 13 | * Allowing New-Extension to be installed with Install-Piecemeal 14 | --- 15 | 16 | ## 0.2.2 17 | * Adding test for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 18 | * Updating Piecemeal tests (checking validation order) ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 19 | * Get-Extension: Fixing -ValidateInput logic ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 20 | * Get-Extension: Fixing support for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 21 | --- 22 | 23 | ## 0.2.1 24 | * Get-Extension: Support for -AllValid ([#45](https://github.com/StartAutomating/Piecemeal/issues/45)) 25 | * Get-Extension: Removing Validation Errors when -ErrorAction is ignore ([#43](https://github.com/StartAutomating/Piecemeal/issues/43)) 26 | * Updating Piecemeal tests: Adding test for Steppable Pipeline ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)) 27 | * Updating Piecemeal Formatting (making .Extends a list) (re [#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 28 | * Get-Extension: Support for SteppablePipelines ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)). Fixing .Extends bug ([#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 29 | --- 30 | ## 0.2 31 | * Adding formatting for extensions ([#40](https://github.com/StartAutomating/Piecemeal/issues/40)) 32 | * Updating Piecemeal tests (account for Regex) ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 33 | * Get-Extension: Regex support for [Cmdlet] attribute ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 34 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 35 | * Get-Extension: Adding -Help ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 36 | --- 37 | 38 | ## 0.1.10 39 | * Get-Extension: Adding -ParameterSetName ([#36](https://github.com/StartAutomating/Piecemeal/issues/36)) 40 | * Install-Extension: Adding -Force to Import-Module in Install Note ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 41 | --- 42 | 43 | ## 0.1.9 44 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 45 | --- 46 | 47 | ## 0.1.8 48 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 49 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 50 | --- 51 | ## 0.1.7 52 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 53 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 54 | --- 55 | ## 0.1.6 56 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 57 | --- 58 | ## 0.1.5 59 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 60 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 61 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 62 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 63 | --- 64 | ## 0.1.4 65 | * Get-Extension: 66 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 67 | --- 68 | 69 | ## 0.1.3 70 | * Get-Extension: 71 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 72 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 73 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 74 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 75 | * Install-Piecemeal: 76 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 77 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 78 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 79 | --- 80 | ## 0.1.2 81 | * Get-Extension: 82 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 83 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 84 | --- 85 | ## 0.1.1 86 | * Get-Extension: 87 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 88 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 89 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 90 | --- 91 | ## 0.1 92 | * Initial Release of Piecemeal 93 | --- 94 | -------------------------------------------------------------------------------- /docs/_posts/2022-05-02-Piecemeal-0.2.5.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.2.5 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.2.5 5 | tag: release 6 | --- 7 | ## 0.2.5 8 | * Get-Extension: Adding -CouldPipe ([#58](https://github.com/StartAutomating/Piecemeal/issues/58)) 9 | * Get-Extension: Fixing .Tags based inclusion ([#57](https://github.com/StartAutomating/Piecemeal/issues/57)) 10 | --- 11 | ## 0.2.4 12 | * Install-Piecemeal: Making -ExtensionModule Optional ([#54](https://github.com/StartAutomating/Piecemeal/issues/54)) 13 | --- 14 | ## 0.2.3 15 | * Adding New-Extension ([#51](https://github.com/StartAutomating/Piecemeal/issues/51)) 16 | * Generating Docs ([#52](https://github.com/StartAutomating/Piecemeal/issues/52)) 17 | * Allowing New-Extension to be installed with Install-Piecemeal 18 | --- 19 | 20 | ## 0.2.2 21 | * Adding test for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 22 | * Updating Piecemeal tests (checking validation order) ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 23 | * Get-Extension: Fixing -ValidateInput logic ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 24 | * Get-Extension: Fixing support for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 25 | --- 26 | 27 | ## 0.2.1 28 | * Get-Extension: Support for -AllValid ([#45](https://github.com/StartAutomating/Piecemeal/issues/45)) 29 | * Get-Extension: Removing Validation Errors when -ErrorAction is ignore ([#43](https://github.com/StartAutomating/Piecemeal/issues/43)) 30 | * Updating Piecemeal tests: Adding test for Steppable Pipeline ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)) 31 | * Updating Piecemeal Formatting (making .Extends a list) (re [#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 32 | * Get-Extension: Support for SteppablePipelines ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)). Fixing .Extends bug ([#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 33 | --- 34 | ## 0.2 35 | * Adding formatting for extensions ([#40](https://github.com/StartAutomating/Piecemeal/issues/40)) 36 | * Updating Piecemeal tests (account for Regex) ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 37 | * Get-Extension: Regex support for [Cmdlet] attribute ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 38 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 39 | * Get-Extension: Adding -Help ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 40 | --- 41 | 42 | ## 0.1.10 43 | * Get-Extension: Adding -ParameterSetName ([#36](https://github.com/StartAutomating/Piecemeal/issues/36)) 44 | * Install-Extension: Adding -Force to Import-Module in Install Note ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 45 | --- 46 | 47 | ## 0.1.9 48 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 49 | --- 50 | 51 | ## 0.1.8 52 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 53 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 54 | --- 55 | ## 0.1.7 56 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 57 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 58 | --- 59 | ## 0.1.6 60 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 61 | --- 62 | ## 0.1.5 63 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 64 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 65 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 66 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 67 | --- 68 | ## 0.1.4 69 | * Get-Extension: 70 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 71 | --- 72 | 73 | ## 0.1.3 74 | * Get-Extension: 75 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 76 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 77 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 78 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 79 | * Install-Piecemeal: 80 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 81 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 82 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 83 | --- 84 | ## 0.1.2 85 | * Get-Extension: 86 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 87 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 88 | --- 89 | ## 0.1.1 90 | * Get-Extension: 91 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 92 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 93 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 94 | --- 95 | ## 0.1 96 | * Initial Release of Piecemeal 97 | --- 98 | -------------------------------------------------------------------------------- /docs/_posts/2022-05-03-Piecemeal-0.2.6.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.2.6 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.2.6 5 | tag: release 6 | --- 7 | ## 0.2.6 8 | * Get-Extension: 9 | * Matching -ExtensionName support aliases ([#63](https://github.com/StartAutomating/Piecemeal/issues/63)) 10 | * Matching -ExtensionName against .DisplayName or .Name ([#61](https://github.com/StartAutomating/Piecemeal/issues/61)) 11 | * Get-Extension: -CouldPipe no longer cares about manadatory parameters ([#62](https://github.com/StartAutomating/Piecemeal/issues/62)) 12 | --- 13 | ## 0.2.5 14 | * Get-Extension: Adding -CouldPipe ([#58](https://github.com/StartAutomating/Piecemeal/issues/58)) 15 | * Get-Extension: Fixing .Tags based inclusion ([#57](https://github.com/StartAutomating/Piecemeal/issues/57)) 16 | --- 17 | ## 0.2.4 18 | * Install-Piecemeal: Making -ExtensionModule Optional ([#54](https://github.com/StartAutomating/Piecemeal/issues/54)) 19 | --- 20 | ## 0.2.3 21 | * Adding New-Extension ([#51](https://github.com/StartAutomating/Piecemeal/issues/51)) 22 | * Generating Docs ([#52](https://github.com/StartAutomating/Piecemeal/issues/52)) 23 | * Allowing New-Extension to be installed with Install-Piecemeal 24 | --- 25 | 26 | ## 0.2.2 27 | * Adding test for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 28 | * Updating Piecemeal tests (checking validation order) ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 29 | * Get-Extension: Fixing -ValidateInput logic ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 30 | * Get-Extension: Fixing support for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 31 | --- 32 | 33 | ## 0.2.1 34 | * Get-Extension: Support for -AllValid ([#45](https://github.com/StartAutomating/Piecemeal/issues/45)) 35 | * Get-Extension: Removing Validation Errors when -ErrorAction is ignore ([#43](https://github.com/StartAutomating/Piecemeal/issues/43)) 36 | * Updating Piecemeal tests: Adding test for Steppable Pipeline ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)) 37 | * Updating Piecemeal Formatting (making .Extends a list) (re [#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 38 | * Get-Extension: Support for SteppablePipelines ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)). Fixing .Extends bug ([#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 39 | --- 40 | ## 0.2 41 | * Adding formatting for extensions ([#40](https://github.com/StartAutomating/Piecemeal/issues/40)) 42 | * Updating Piecemeal tests (account for Regex) ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 43 | * Get-Extension: Regex support for [Cmdlet] attribute ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 44 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 45 | * Get-Extension: Adding -Help ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 46 | --- 47 | 48 | ## 0.1.10 49 | * Get-Extension: Adding -ParameterSetName ([#36](https://github.com/StartAutomating/Piecemeal/issues/36)) 50 | * Install-Extension: Adding -Force to Import-Module in Install Note ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 51 | --- 52 | 53 | ## 0.1.9 54 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 55 | --- 56 | 57 | ## 0.1.8 58 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 59 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 60 | --- 61 | ## 0.1.7 62 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 63 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 64 | --- 65 | ## 0.1.6 66 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 67 | --- 68 | ## 0.1.5 69 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 70 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 71 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 72 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 73 | --- 74 | ## 0.1.4 75 | * Get-Extension: 76 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 77 | --- 78 | 79 | ## 0.1.3 80 | * Get-Extension: 81 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 82 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 83 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 84 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 85 | * Install-Piecemeal: 86 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 87 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 88 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 89 | --- 90 | ## 0.1.2 91 | * Get-Extension: 92 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 93 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 94 | --- 95 | ## 0.1.1 96 | * Get-Extension: 97 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 98 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 99 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 100 | --- 101 | ## 0.1 102 | * Initial Release of Piecemeal 103 | --- 104 | -------------------------------------------------------------------------------- /docs/_posts/2022-05-27-Piecemeal-0.2.7.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.2.7 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.2.7 5 | tag: release 6 | --- 7 | ## 0.2.7 8 | * Get-Extension 9 | * Allowing any command type ([#65](https://github.com/StartAutomating/Piecemeal/issues/65)) 10 | * Fixing -CouldPipe ([#67](https://github.com/StartAutomating/Piecemeal/issues/67)) 11 | --- 12 | ## 0.2.6 13 | * Get-Extension: 14 | * Matching -ExtensionName support aliases ([#63](https://github.com/StartAutomating/Piecemeal/issues/63)) 15 | * Matching -ExtensionName against .DisplayName or .Name ([#61](https://github.com/StartAutomating/Piecemeal/issues/61)) 16 | * Get-Extension: -CouldPipe no longer cares about manadatory parameters ([#62](https://github.com/StartAutomating/Piecemeal/issues/62)) 17 | --- 18 | ## 0.2.5 19 | * Get-Extension: Adding -CouldPipe ([#58](https://github.com/StartAutomating/Piecemeal/issues/58)) 20 | * Get-Extension: Fixing .Tags based inclusion ([#57](https://github.com/StartAutomating/Piecemeal/issues/57)) 21 | --- 22 | ## 0.2.4 23 | * Install-Piecemeal: Making -ExtensionModule Optional ([#54](https://github.com/StartAutomating/Piecemeal/issues/54)) 24 | --- 25 | ## 0.2.3 26 | * Adding New-Extension ([#51](https://github.com/StartAutomating/Piecemeal/issues/51)) 27 | * Generating Docs ([#52](https://github.com/StartAutomating/Piecemeal/issues/52)) 28 | * Allowing New-Extension to be installed with Install-Piecemeal 29 | --- 30 | 31 | ## 0.2.2 32 | * Adding test for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 33 | * Updating Piecemeal tests (checking validation order) ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 34 | * Get-Extension: Fixing -ValidateInput logic ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 35 | * Get-Extension: Fixing support for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 36 | --- 37 | 38 | ## 0.2.1 39 | * Get-Extension: Support for -AllValid ([#45](https://github.com/StartAutomating/Piecemeal/issues/45)) 40 | * Get-Extension: Removing Validation Errors when -ErrorAction is ignore ([#43](https://github.com/StartAutomating/Piecemeal/issues/43)) 41 | * Updating Piecemeal tests: Adding test for Steppable Pipeline ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)) 42 | * Updating Piecemeal Formatting (making .Extends a list) (re [#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 43 | * Get-Extension: Support for SteppablePipelines ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)). Fixing .Extends bug ([#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 44 | --- 45 | ## 0.2 46 | * Adding formatting for extensions ([#40](https://github.com/StartAutomating/Piecemeal/issues/40)) 47 | * Updating Piecemeal tests (account for Regex) ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 48 | * Get-Extension: Regex support for [Cmdlet] attribute ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 49 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 50 | * Get-Extension: Adding -Help ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 51 | --- 52 | 53 | ## 0.1.10 54 | * Get-Extension: Adding -ParameterSetName ([#36](https://github.com/StartAutomating/Piecemeal/issues/36)) 55 | * Install-Extension: Adding -Force to Import-Module in Install Note ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 56 | --- 57 | 58 | ## 0.1.9 59 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 60 | --- 61 | 62 | ## 0.1.8 63 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 64 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 65 | --- 66 | ## 0.1.7 67 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 68 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 69 | --- 70 | ## 0.1.6 71 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 72 | --- 73 | ## 0.1.5 74 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 75 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 76 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 77 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 78 | --- 79 | ## 0.1.4 80 | * Get-Extension: 81 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 82 | --- 83 | 84 | ## 0.1.3 85 | * Get-Extension: 86 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 87 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 88 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 89 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 90 | * Install-Piecemeal: 91 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 92 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 93 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 94 | --- 95 | ## 0.1.2 96 | * Get-Extension: 97 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 98 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 99 | --- 100 | ## 0.1.1 101 | * Get-Extension: 102 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 103 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 104 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 105 | --- 106 | ## 0.1 107 | * Initial Release of Piecemeal 108 | --- 109 | -------------------------------------------------------------------------------- /docs/_posts/2022-06-16-Piecemeal-0.2.8.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.2.8 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.2.8 5 | tag: release 6 | --- 7 | ## 0.2.8 8 | * Get-Extension: 9 | * Performance Improvements ([#75](https://github.com/StartAutomating/Piecemeal/issues/75)) 10 | * Regular Expressions now IgnorePatternWhitespace ([#71](https://github.com/StartAutomating/Piecemeal/issues/71)) 11 | * -ExtensionPattern allows for multiple patterns ([#70](https://github.com/StartAutomating/Piecemeal/issues/70)) 12 | * Allowing any command type ([#65](https://github.com/StartAutomating/Piecemeal/issues/65)) 13 | * Install-Piecemeal: 14 | * Adding -RenameVariable ([#72](https://github.com/StartAutomating/Piecemeal/issues/72)) 15 | * Automatically renaming parameters when -ExtensionNoun is provided ([#60](https://github.com/StartAutomating/Piecemeal/issues/60)) 16 | --- 17 | ## 0.2.7 18 | * Get-Extension 19 | * Allowing any command type ([#65](https://github.com/StartAutomating/Piecemeal/issues/65)) 20 | * Fixing -CouldPipe ([#67](https://github.com/StartAutomating/Piecemeal/issues/67)) 21 | --- 22 | ## 0.2.6 23 | * Get-Extension: 24 | * Matching -ExtensionName support aliases ([#63](https://github.com/StartAutomating/Piecemeal/issues/63)) 25 | * Matching -ExtensionName against .DisplayName or .Name ([#61](https://github.com/StartAutomating/Piecemeal/issues/61)) 26 | * Get-Extension: -CouldPipe no longer cares about manadatory parameters ([#62](https://github.com/StartAutomating/Piecemeal/issues/62)) 27 | --- 28 | ## 0.2.5 29 | * Get-Extension: Adding -CouldPipe ([#58](https://github.com/StartAutomating/Piecemeal/issues/58)) 30 | * Get-Extension: Fixing .Tags based inclusion ([#57](https://github.com/StartAutomating/Piecemeal/issues/57)) 31 | --- 32 | ## 0.2.4 33 | * Install-Piecemeal: Making -ExtensionModule Optional ([#54](https://github.com/StartAutomating/Piecemeal/issues/54)) 34 | --- 35 | ## 0.2.3 36 | * Adding New-Extension ([#51](https://github.com/StartAutomating/Piecemeal/issues/51)) 37 | * Generating Docs ([#52](https://github.com/StartAutomating/Piecemeal/issues/52)) 38 | * Allowing New-Extension to be installed with Install-Piecemeal 39 | --- 40 | 41 | ## 0.2.2 42 | * Adding test for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 43 | * Updating Piecemeal tests (checking validation order) ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 44 | * Get-Extension: Fixing -ValidateInput logic ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 45 | * Get-Extension: Fixing support for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 46 | --- 47 | 48 | ## 0.2.1 49 | * Get-Extension: Support for -AllValid ([#45](https://github.com/StartAutomating/Piecemeal/issues/45)) 50 | * Get-Extension: Removing Validation Errors when -ErrorAction is ignore ([#43](https://github.com/StartAutomating/Piecemeal/issues/43)) 51 | * Updating Piecemeal tests: Adding test for Steppable Pipeline ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)) 52 | * Updating Piecemeal Formatting (making .Extends a list) (re [#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 53 | * Get-Extension: Support for SteppablePipelines ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)). Fixing .Extends bug ([#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 54 | --- 55 | ## 0.2 56 | * Adding formatting for extensions ([#40](https://github.com/StartAutomating/Piecemeal/issues/40)) 57 | * Updating Piecemeal tests (account for Regex) ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 58 | * Get-Extension: Regex support for [Cmdlet] attribute ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 59 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 60 | * Get-Extension: Adding -Help ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 61 | --- 62 | 63 | ## 0.1.10 64 | * Get-Extension: Adding -ParameterSetName ([#36](https://github.com/StartAutomating/Piecemeal/issues/36)) 65 | * Install-Extension: Adding -Force to Import-Module in Install Note ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 66 | --- 67 | 68 | ## 0.1.9 69 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 70 | --- 71 | 72 | ## 0.1.8 73 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 74 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 75 | --- 76 | ## 0.1.7 77 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 78 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 79 | --- 80 | ## 0.1.6 81 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 82 | --- 83 | ## 0.1.5 84 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 85 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 86 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 87 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 88 | --- 89 | ## 0.1.4 90 | * Get-Extension: 91 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 92 | --- 93 | 94 | ## 0.1.3 95 | * Get-Extension: 96 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 97 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 98 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 99 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 100 | * Install-Piecemeal: 101 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 102 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 103 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 104 | --- 105 | ## 0.1.2 106 | * Get-Extension: 107 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 108 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 109 | --- 110 | ## 0.1.1 111 | * Get-Extension: 112 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 113 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 114 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 115 | --- 116 | ## 0.1 117 | * Initial Release of Piecemeal 118 | --- 119 | -------------------------------------------------------------------------------- /docs/_posts/2022-06-20-Piecemeal-0.2.9.1.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.2.9.1 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.2.9.1 5 | tag: release 6 | --- 7 | ## 0.2.9.1: 8 | * Fixing Get-Extension overcollection ([#82](https://github.com/StartAutomating/Piecemeal/issues/82)) 9 | --- 10 | 11 | ## 0.2.9: 12 | * Get-Extension: 13 | * -CouldRun now honors validation attributes ([#77](https://github.com/StartAutomating/Piecemeal/issues/77)) 14 | * -CouldPipe now honors validation attributes ([#78](https://github.com/StartAutomating/Piecemeal/issues/78)) 15 | * -ExtensionName now supports Regex Literal Aliases ```[Alias(/Expression/)]``` ([#80](https://github.com/StartAutomating/Piecemeal/issues/80)) 16 | * -CouldRun, -CouldPipe, -Validate are no longer mutually exclusive ([#79](https://github.com/StartAutomating/Piecemeal/issues/79)) 17 | * Install-Piecemeal 18 | * Support for custom -WhereObject ([#73](https://github.com/StartAutomating/Piecemeal/issues/73)) 19 | * Support for custom -ForeachObject ([#74](https://github.com/StartAutomating/Piecemeal/issues/74)) 20 | --- 21 | 22 | ## 0.2.8 23 | * Get-Extension: 24 | * Performance Improvements ([#75](https://github.com/StartAutomating/Piecemeal/issues/75)) 25 | * Regular Expressions now IgnorePatternWhitespace ([#71](https://github.com/StartAutomating/Piecemeal/issues/71)) 26 | * -ExtensionPattern allows for multiple patterns ([#70](https://github.com/StartAutomating/Piecemeal/issues/70)) 27 | * Allowing any command type ([#65](https://github.com/StartAutomating/Piecemeal/issues/65)) 28 | * Install-Piecemeal: 29 | * Adding -RenameVariable ([#72](https://github.com/StartAutomating/Piecemeal/issues/72)) 30 | * Automatically renaming parameters when -ExtensionNoun is provided ([#60](https://github.com/StartAutomating/Piecemeal/issues/60)) 31 | --- 32 | ## 0.2.7 33 | * Get-Extension 34 | * Allowing any command type ([#65](https://github.com/StartAutomating/Piecemeal/issues/65)) 35 | * Fixing -CouldPipe ([#67](https://github.com/StartAutomating/Piecemeal/issues/67)) 36 | --- 37 | ## 0.2.6 38 | * Get-Extension: 39 | * Matching -ExtensionName support aliases ([#63](https://github.com/StartAutomating/Piecemeal/issues/63)) 40 | * Matching -ExtensionName against .DisplayName or .Name ([#61](https://github.com/StartAutomating/Piecemeal/issues/61)) 41 | * Get-Extension: -CouldPipe no longer cares about manadatory parameters ([#62](https://github.com/StartAutomating/Piecemeal/issues/62)) 42 | --- 43 | ## 0.2.5 44 | * Get-Extension: Adding -CouldPipe ([#58](https://github.com/StartAutomating/Piecemeal/issues/58)) 45 | * Get-Extension: Fixing .Tags based inclusion ([#57](https://github.com/StartAutomating/Piecemeal/issues/57)) 46 | --- 47 | ## 0.2.4 48 | * Install-Piecemeal: Making -ExtensionModule Optional ([#54](https://github.com/StartAutomating/Piecemeal/issues/54)) 49 | --- 50 | ## 0.2.3 51 | * Adding New-Extension ([#51](https://github.com/StartAutomating/Piecemeal/issues/51)) 52 | * Generating Docs ([#52](https://github.com/StartAutomating/Piecemeal/issues/52)) 53 | * Allowing New-Extension to be installed with Install-Piecemeal 54 | --- 55 | 56 | ## 0.2.2 57 | * Adding test for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 58 | * Updating Piecemeal tests (checking validation order) ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 59 | * Get-Extension: Fixing -ValidateInput logic ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 60 | * Get-Extension: Fixing support for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 61 | --- 62 | 63 | ## 0.2.1 64 | * Get-Extension: Support for -AllValid ([#45](https://github.com/StartAutomating/Piecemeal/issues/45)) 65 | * Get-Extension: Removing Validation Errors when -ErrorAction is ignore ([#43](https://github.com/StartAutomating/Piecemeal/issues/43)) 66 | * Updating Piecemeal tests: Adding test for Steppable Pipeline ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)) 67 | * Updating Piecemeal Formatting (making .Extends a list) (re [#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 68 | * Get-Extension: Support for SteppablePipelines ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)). Fixing .Extends bug ([#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 69 | --- 70 | ## 0.2 71 | * Adding formatting for extensions ([#40](https://github.com/StartAutomating/Piecemeal/issues/40)) 72 | * Updating Piecemeal tests (account for Regex) ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 73 | * Get-Extension: Regex support for [Cmdlet] attribute ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 74 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 75 | * Get-Extension: Adding -Help ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 76 | --- 77 | 78 | ## 0.1.10 79 | * Get-Extension: Adding -ParameterSetName ([#36](https://github.com/StartAutomating/Piecemeal/issues/36)) 80 | * Install-Extension: Adding -Force to Import-Module in Install Note ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 81 | --- 82 | 83 | ## 0.1.9 84 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 85 | --- 86 | 87 | ## 0.1.8 88 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 89 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 90 | --- 91 | ## 0.1.7 92 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 93 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 94 | --- 95 | ## 0.1.6 96 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 97 | --- 98 | ## 0.1.5 99 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 100 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 101 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 102 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 103 | --- 104 | ## 0.1.4 105 | * Get-Extension: 106 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 107 | --- 108 | 109 | ## 0.1.3 110 | * Get-Extension: 111 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 112 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 113 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 114 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 115 | * Install-Piecemeal: 116 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 117 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 118 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 119 | --- 120 | ## 0.1.2 121 | * Get-Extension: 122 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 123 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 124 | --- 125 | ## 0.1.1 126 | * Get-Extension: 127 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 128 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 129 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 130 | --- 131 | ## 0.1 132 | * Initial Release of Piecemeal 133 | --- 134 | -------------------------------------------------------------------------------- /docs/_posts/2022-06-20-Piecemeal-0.2.9.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.2.9 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.2.9 5 | tag: release 6 | --- 7 | ## 0.2.9: 8 | * Get-Extension: 9 | * -CouldRun now honors validation attributes ([#77](https://github.com/StartAutomating/Piecemeal/issues/77)) 10 | * -CouldPipe now honors validation attributes ([#78](https://github.com/StartAutomating/Piecemeal/issues/78)) 11 | * -ExtensionName now supports Regex Literal Aliases ```[Alias(/Expression/)]``` ([#80](https://github.com/StartAutomating/Piecemeal/issues/80)) 12 | * -CouldRun, -CouldPipe, -Validate are no longer mutually exclusive ([#79](https://github.com/StartAutomating/Piecemeal/issues/79)) 13 | * Install-Piecemeal 14 | * Support for custom -WhereObject ([#73](https://github.com/StartAutomating/Piecemeal/issues/73)) 15 | * Support for custom -ForeachObject ([#74](https://github.com/StartAutomating/Piecemeal/issues/74)) 16 | --- 17 | 18 | ## 0.2.8 19 | * Get-Extension: 20 | * Performance Improvements ([#75](https://github.com/StartAutomating/Piecemeal/issues/75)) 21 | * Regular Expressions now IgnorePatternWhitespace ([#71](https://github.com/StartAutomating/Piecemeal/issues/71)) 22 | * -ExtensionPattern allows for multiple patterns ([#70](https://github.com/StartAutomating/Piecemeal/issues/70)) 23 | * Allowing any command type ([#65](https://github.com/StartAutomating/Piecemeal/issues/65)) 24 | * Install-Piecemeal: 25 | * Adding -RenameVariable ([#72](https://github.com/StartAutomating/Piecemeal/issues/72)) 26 | * Automatically renaming parameters when -ExtensionNoun is provided ([#60](https://github.com/StartAutomating/Piecemeal/issues/60)) 27 | --- 28 | ## 0.2.7 29 | * Get-Extension 30 | * Allowing any command type ([#65](https://github.com/StartAutomating/Piecemeal/issues/65)) 31 | * Fixing -CouldPipe ([#67](https://github.com/StartAutomating/Piecemeal/issues/67)) 32 | --- 33 | ## 0.2.6 34 | * Get-Extension: 35 | * Matching -ExtensionName support aliases ([#63](https://github.com/StartAutomating/Piecemeal/issues/63)) 36 | * Matching -ExtensionName against .DisplayName or .Name ([#61](https://github.com/StartAutomating/Piecemeal/issues/61)) 37 | * Get-Extension: -CouldPipe no longer cares about manadatory parameters ([#62](https://github.com/StartAutomating/Piecemeal/issues/62)) 38 | --- 39 | ## 0.2.5 40 | * Get-Extension: Adding -CouldPipe ([#58](https://github.com/StartAutomating/Piecemeal/issues/58)) 41 | * Get-Extension: Fixing .Tags based inclusion ([#57](https://github.com/StartAutomating/Piecemeal/issues/57)) 42 | --- 43 | ## 0.2.4 44 | * Install-Piecemeal: Making -ExtensionModule Optional ([#54](https://github.com/StartAutomating/Piecemeal/issues/54)) 45 | --- 46 | ## 0.2.3 47 | * Adding New-Extension ([#51](https://github.com/StartAutomating/Piecemeal/issues/51)) 48 | * Generating Docs ([#52](https://github.com/StartAutomating/Piecemeal/issues/52)) 49 | * Allowing New-Extension to be installed with Install-Piecemeal 50 | --- 51 | 52 | ## 0.2.2 53 | * Adding test for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 54 | * Updating Piecemeal tests (checking validation order) ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 55 | * Get-Extension: Fixing -ValidateInput logic ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 56 | * Get-Extension: Fixing support for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 57 | --- 58 | 59 | ## 0.2.1 60 | * Get-Extension: Support for -AllValid ([#45](https://github.com/StartAutomating/Piecemeal/issues/45)) 61 | * Get-Extension: Removing Validation Errors when -ErrorAction is ignore ([#43](https://github.com/StartAutomating/Piecemeal/issues/43)) 62 | * Updating Piecemeal tests: Adding test for Steppable Pipeline ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)) 63 | * Updating Piecemeal Formatting (making .Extends a list) (re [#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 64 | * Get-Extension: Support for SteppablePipelines ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)). Fixing .Extends bug ([#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 65 | --- 66 | ## 0.2 67 | * Adding formatting for extensions ([#40](https://github.com/StartAutomating/Piecemeal/issues/40)) 68 | * Updating Piecemeal tests (account for Regex) ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 69 | * Get-Extension: Regex support for [Cmdlet] attribute ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 70 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 71 | * Get-Extension: Adding -Help ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 72 | --- 73 | 74 | ## 0.1.10 75 | * Get-Extension: Adding -ParameterSetName ([#36](https://github.com/StartAutomating/Piecemeal/issues/36)) 76 | * Install-Extension: Adding -Force to Import-Module in Install Note ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 77 | --- 78 | 79 | ## 0.1.9 80 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 81 | --- 82 | 83 | ## 0.1.8 84 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 85 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 86 | --- 87 | ## 0.1.7 88 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 89 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 90 | --- 91 | ## 0.1.6 92 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 93 | --- 94 | ## 0.1.5 95 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 96 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 97 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 98 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 99 | --- 100 | ## 0.1.4 101 | * Get-Extension: 102 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 103 | --- 104 | 105 | ## 0.1.3 106 | * Get-Extension: 107 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 108 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 109 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 110 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 111 | * Install-Piecemeal: 112 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 113 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 114 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 115 | --- 116 | ## 0.1.2 117 | * Get-Extension: 118 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 119 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 120 | --- 121 | ## 0.1.1 122 | * Get-Extension: 123 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 124 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 125 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 126 | --- 127 | ## 0.1 128 | * Initial Release of Piecemeal 129 | --- 130 | -------------------------------------------------------------------------------- /docs/_posts/2022-06-25-Piecemeal-0.3.0.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.3.0 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.3.0 5 | tag: release 6 | --- 7 | ## 0.3.0: 8 | * Get-Extension: 9 | * Ensuring Regexes IgnoreCase ([#85](https://github.com/StartAutomating/Piecemeal/issues/85)) 10 | * Trimming Trailing Whitepace from .Synopsis and .Description ([#84](https://github.com/StartAutomating/Piecemeal/issues/84)) 11 | --- 12 | ## 0.2.9.1: 13 | * Fixing Get-Extension overcollection ([#82](https://github.com/StartAutomating/Piecemeal/issues/82)) 14 | --- 15 | 16 | ## 0.2.9: 17 | * Get-Extension: 18 | * -CouldRun now honors validation attributes ([#77](https://github.com/StartAutomating/Piecemeal/issues/77)) 19 | * -CouldPipe now honors validation attributes ([#78](https://github.com/StartAutomating/Piecemeal/issues/78)) 20 | * -ExtensionName now supports Regex Literal Aliases ```[Alias(/Expression/)]``` ([#80](https://github.com/StartAutomating/Piecemeal/issues/80)) 21 | * -CouldRun, -CouldPipe, -Validate are no longer mutually exclusive ([#79](https://github.com/StartAutomating/Piecemeal/issues/79)) 22 | * Install-Piecemeal 23 | * Support for custom -WhereObject ([#73](https://github.com/StartAutomating/Piecemeal/issues/73)) 24 | * Support for custom -ForeachObject ([#74](https://github.com/StartAutomating/Piecemeal/issues/74)) 25 | --- 26 | 27 | ## 0.2.8 28 | * Get-Extension: 29 | * Performance Improvements ([#75](https://github.com/StartAutomating/Piecemeal/issues/75)) 30 | * Regular Expressions now IgnorePatternWhitespace ([#71](https://github.com/StartAutomating/Piecemeal/issues/71)) 31 | * -ExtensionPattern allows for multiple patterns ([#70](https://github.com/StartAutomating/Piecemeal/issues/70)) 32 | * Allowing any command type ([#65](https://github.com/StartAutomating/Piecemeal/issues/65)) 33 | * Install-Piecemeal: 34 | * Adding -RenameVariable ([#72](https://github.com/StartAutomating/Piecemeal/issues/72)) 35 | * Automatically renaming parameters when -ExtensionNoun is provided ([#60](https://github.com/StartAutomating/Piecemeal/issues/60)) 36 | --- 37 | ## 0.2.7 38 | * Get-Extension 39 | * Allowing any command type ([#65](https://github.com/StartAutomating/Piecemeal/issues/65)) 40 | * Fixing -CouldPipe ([#67](https://github.com/StartAutomating/Piecemeal/issues/67)) 41 | --- 42 | ## 0.2.6 43 | * Get-Extension: 44 | * Matching -ExtensionName support aliases ([#63](https://github.com/StartAutomating/Piecemeal/issues/63)) 45 | * Matching -ExtensionName against .DisplayName or .Name ([#61](https://github.com/StartAutomating/Piecemeal/issues/61)) 46 | * Get-Extension: -CouldPipe no longer cares about manadatory parameters ([#62](https://github.com/StartAutomating/Piecemeal/issues/62)) 47 | --- 48 | ## 0.2.5 49 | * Get-Extension: Adding -CouldPipe ([#58](https://github.com/StartAutomating/Piecemeal/issues/58)) 50 | * Get-Extension: Fixing .Tags based inclusion ([#57](https://github.com/StartAutomating/Piecemeal/issues/57)) 51 | --- 52 | ## 0.2.4 53 | * Install-Piecemeal: Making -ExtensionModule Optional ([#54](https://github.com/StartAutomating/Piecemeal/issues/54)) 54 | --- 55 | ## 0.2.3 56 | * Adding New-Extension ([#51](https://github.com/StartAutomating/Piecemeal/issues/51)) 57 | * Generating Docs ([#52](https://github.com/StartAutomating/Piecemeal/issues/52)) 58 | * Allowing New-Extension to be installed with Install-Piecemeal 59 | --- 60 | 61 | ## 0.2.2 62 | * Adding test for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 63 | * Updating Piecemeal tests (checking validation order) ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 64 | * Get-Extension: Fixing -ValidateInput logic ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 65 | * Get-Extension: Fixing support for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 66 | --- 67 | 68 | ## 0.2.1 69 | * Get-Extension: Support for -AllValid ([#45](https://github.com/StartAutomating/Piecemeal/issues/45)) 70 | * Get-Extension: Removing Validation Errors when -ErrorAction is ignore ([#43](https://github.com/StartAutomating/Piecemeal/issues/43)) 71 | * Updating Piecemeal tests: Adding test for Steppable Pipeline ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)) 72 | * Updating Piecemeal Formatting (making .Extends a list) (re [#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 73 | * Get-Extension: Support for SteppablePipelines ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)). Fixing .Extends bug ([#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 74 | --- 75 | ## 0.2 76 | * Adding formatting for extensions ([#40](https://github.com/StartAutomating/Piecemeal/issues/40)) 77 | * Updating Piecemeal tests (account for Regex) ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 78 | * Get-Extension: Regex support for [Cmdlet] attribute ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 79 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 80 | * Get-Extension: Adding -Help ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 81 | --- 82 | 83 | ## 0.1.10 84 | * Get-Extension: Adding -ParameterSetName ([#36](https://github.com/StartAutomating/Piecemeal/issues/36)) 85 | * Install-Extension: Adding -Force to Import-Module in Install Note ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 86 | --- 87 | 88 | ## 0.1.9 89 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 90 | --- 91 | 92 | ## 0.1.8 93 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 94 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 95 | --- 96 | ## 0.1.7 97 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 98 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 99 | --- 100 | ## 0.1.6 101 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 102 | --- 103 | ## 0.1.5 104 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 105 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 106 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 107 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 108 | --- 109 | ## 0.1.4 110 | * Get-Extension: 111 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 112 | --- 113 | 114 | ## 0.1.3 115 | * Get-Extension: 116 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 117 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 118 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 119 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 120 | * Install-Piecemeal: 121 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 122 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 123 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 124 | --- 125 | ## 0.1.2 126 | * Get-Extension: 127 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 128 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 129 | --- 130 | ## 0.1.1 131 | * Get-Extension: 132 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 133 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 134 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 135 | --- 136 | ## 0.1 137 | * Initial Release of Piecemeal 138 | --- 139 | -------------------------------------------------------------------------------- /docs/_posts/2022-06-27-Piecemeal-0.3.1.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.3.1 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.3.1 5 | tag: release 6 | --- 7 | ## 0.3.1: 8 | * Get-Extension: 9 | * New Properties/Methods for Each Extension 10 | * .Category ([#89](https://github.com/StartAutomating/Piecemeal/issues/89)) 11 | * .GetHelpField() ([#91](https://github.com/StartAutomating/Piecemeal/issues/91)) 12 | * .Examples ([#87](https://github.com/StartAutomating/Piecemeal/issues/87)) 13 | * .Links ([#88](https://github.com/StartAutomating/Piecemeal/issues/88)) 14 | * .Metadata ([#90](https://github.com/StartAutomating/Piecemeal/issues/90)) 15 | * Removing -RequireExtensionAttribute ([#92](https://github.com/StartAutomating/Piecemeal/issues/92)) 16 | --- 17 | 18 | ## 0.3.0: 19 | * Get-Extension: 20 | * Ensuring Regexes IgnoreCase ([#85](https://github.com/StartAutomating/Piecemeal/issues/85)) 21 | * Trimming Trailing Whitepace from .Synopsis and .Description ([#84](https://github.com/StartAutomating/Piecemeal/issues/84)) 22 | --- 23 | ## 0.2.9.1: 24 | * Fixing Get-Extension overcollection ([#82](https://github.com/StartAutomating/Piecemeal/issues/82)) 25 | --- 26 | 27 | ## 0.2.9: 28 | * Get-Extension: 29 | * -CouldRun now honors validation attributes ([#77](https://github.com/StartAutomating/Piecemeal/issues/77)) 30 | * -CouldPipe now honors validation attributes ([#78](https://github.com/StartAutomating/Piecemeal/issues/78)) 31 | * -ExtensionName now supports Regex Literal Aliases ```[Alias(/Expression/)]``` ([#80](https://github.com/StartAutomating/Piecemeal/issues/80)) 32 | * -CouldRun, -CouldPipe, -Validate are no longer mutually exclusive ([#79](https://github.com/StartAutomating/Piecemeal/issues/79)) 33 | * Install-Piecemeal 34 | * Support for custom -WhereObject ([#73](https://github.com/StartAutomating/Piecemeal/issues/73)) 35 | * Support for custom -ForeachObject ([#74](https://github.com/StartAutomating/Piecemeal/issues/74)) 36 | --- 37 | 38 | ## 0.2.8 39 | * Get-Extension: 40 | * Performance Improvements ([#75](https://github.com/StartAutomating/Piecemeal/issues/75)) 41 | * Regular Expressions now IgnorePatternWhitespace ([#71](https://github.com/StartAutomating/Piecemeal/issues/71)) 42 | * -ExtensionPattern allows for multiple patterns ([#70](https://github.com/StartAutomating/Piecemeal/issues/70)) 43 | * Allowing any command type ([#65](https://github.com/StartAutomating/Piecemeal/issues/65)) 44 | * Install-Piecemeal: 45 | * Adding -RenameVariable ([#72](https://github.com/StartAutomating/Piecemeal/issues/72)) 46 | * Automatically renaming parameters when -ExtensionNoun is provided ([#60](https://github.com/StartAutomating/Piecemeal/issues/60)) 47 | --- 48 | ## 0.2.7 49 | * Get-Extension 50 | * Allowing any command type ([#65](https://github.com/StartAutomating/Piecemeal/issues/65)) 51 | * Fixing -CouldPipe ([#67](https://github.com/StartAutomating/Piecemeal/issues/67)) 52 | --- 53 | ## 0.2.6 54 | * Get-Extension: 55 | * Matching -ExtensionName support aliases ([#63](https://github.com/StartAutomating/Piecemeal/issues/63)) 56 | * Matching -ExtensionName against .DisplayName or .Name ([#61](https://github.com/StartAutomating/Piecemeal/issues/61)) 57 | * Get-Extension: -CouldPipe no longer cares about manadatory parameters ([#62](https://github.com/StartAutomating/Piecemeal/issues/62)) 58 | --- 59 | ## 0.2.5 60 | * Get-Extension: Adding -CouldPipe ([#58](https://github.com/StartAutomating/Piecemeal/issues/58)) 61 | * Get-Extension: Fixing .Tags based inclusion ([#57](https://github.com/StartAutomating/Piecemeal/issues/57)) 62 | --- 63 | ## 0.2.4 64 | * Install-Piecemeal: Making -ExtensionModule Optional ([#54](https://github.com/StartAutomating/Piecemeal/issues/54)) 65 | --- 66 | ## 0.2.3 67 | * Adding New-Extension ([#51](https://github.com/StartAutomating/Piecemeal/issues/51)) 68 | * Generating Docs ([#52](https://github.com/StartAutomating/Piecemeal/issues/52)) 69 | * Allowing New-Extension to be installed with Install-Piecemeal 70 | --- 71 | 72 | ## 0.2.2 73 | * Adding test for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 74 | * Updating Piecemeal tests (checking validation order) ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 75 | * Get-Extension: Fixing -ValidateInput logic ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 76 | * Get-Extension: Fixing support for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 77 | --- 78 | 79 | ## 0.2.1 80 | * Get-Extension: Support for -AllValid ([#45](https://github.com/StartAutomating/Piecemeal/issues/45)) 81 | * Get-Extension: Removing Validation Errors when -ErrorAction is ignore ([#43](https://github.com/StartAutomating/Piecemeal/issues/43)) 82 | * Updating Piecemeal tests: Adding test for Steppable Pipeline ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)) 83 | * Updating Piecemeal Formatting (making .Extends a list) (re [#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 84 | * Get-Extension: Support for SteppablePipelines ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)). Fixing .Extends bug ([#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 85 | --- 86 | ## 0.2 87 | * Adding formatting for extensions ([#40](https://github.com/StartAutomating/Piecemeal/issues/40)) 88 | * Updating Piecemeal tests (account for Regex) ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 89 | * Get-Extension: Regex support for [Cmdlet] attribute ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 90 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 91 | * Get-Extension: Adding -Help ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 92 | --- 93 | 94 | ## 0.1.10 95 | * Get-Extension: Adding -ParameterSetName ([#36](https://github.com/StartAutomating/Piecemeal/issues/36)) 96 | * Install-Extension: Adding -Force to Import-Module in Install Note ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 97 | --- 98 | 99 | ## 0.1.9 100 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 101 | --- 102 | 103 | ## 0.1.8 104 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 105 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 106 | --- 107 | ## 0.1.7 108 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 109 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 110 | --- 111 | ## 0.1.6 112 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 113 | --- 114 | ## 0.1.5 115 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 116 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 117 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 118 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 119 | --- 120 | ## 0.1.4 121 | * Get-Extension: 122 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 123 | --- 124 | 125 | ## 0.1.3 126 | * Get-Extension: 127 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 128 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 129 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 130 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 131 | * Install-Piecemeal: 132 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 133 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 134 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 135 | --- 136 | ## 0.1.2 137 | * Get-Extension: 138 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 139 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 140 | --- 141 | ## 0.1.1 142 | * Get-Extension: 143 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 144 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 145 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 146 | --- 147 | ## 0.1 148 | * Initial Release of Piecemeal 149 | --- 150 | -------------------------------------------------------------------------------- /docs/_posts/2022-06-27-Piecemeal-0.3.2.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | title: Piecemeal 0.3.2 4 | sourceURL: https://github.com/StartAutomating/Piecemeal/releases/tag/v0.3.2 5 | tag: release 6 | --- 7 | ## 0.3.2: 8 | * Piecemeal Available as a GitHub Action ([#56](https://github.com/StartAutomating/Piecemeal/issues/56)) 9 | * Get-Extension: 10 | * Adding .BlockComments property ([#96](https://github.com/StartAutomating/Piecemeal/issues/96)) 11 | * Fixing GetHelpField whitespace ([#95](https://github.com/StartAutomating/Piecemeal/issues/95)) 12 | * Scoping GetHelpField matches to .BlockComments ([#94](https://github.com/StartAutomating/Piecemeal/issues/94)) 13 | * Trimming leading whitespace from .Synopsis and .Description ([#99](https://github.com/StartAutomating/Piecemeal/issues/99)) 14 | * Install-Piecemeal: 15 | * Returns a file when -OutputPath is passed ([#97](https://github.com/StartAutomating/Piecemeal/issues/97)) 16 | --- 17 | 18 | ## 0.3.1: 19 | * Get-Extension: 20 | * New Properties/Methods for Each Extension 21 | * .Category ([#89](https://github.com/StartAutomating/Piecemeal/issues/89)) 22 | * .GetHelpField() ([#91](https://github.com/StartAutomating/Piecemeal/issues/91)) 23 | * .Examples ([#87](https://github.com/StartAutomating/Piecemeal/issues/87)) 24 | * .Links ([#88](https://github.com/StartAutomating/Piecemeal/issues/88)) 25 | * .Metadata ([#90](https://github.com/StartAutomating/Piecemeal/issues/90)) 26 | * Removing -RequireExtensionAttribute ([#92](https://github.com/StartAutomating/Piecemeal/issues/92)) 27 | --- 28 | 29 | ## 0.3.0: 30 | * Get-Extension: 31 | * Ensuring Regexes IgnoreCase ([#85](https://github.com/StartAutomating/Piecemeal/issues/85)) 32 | * Trimming Trailing Whitepace from .Synopsis and .Description ([#84](https://github.com/StartAutomating/Piecemeal/issues/84)) 33 | --- 34 | ## 0.2.9.1: 35 | * Fixing Get-Extension overcollection ([#82](https://github.com/StartAutomating/Piecemeal/issues/82)) 36 | --- 37 | 38 | ## 0.2.9: 39 | * Get-Extension: 40 | * -CouldRun now honors validation attributes ([#77](https://github.com/StartAutomating/Piecemeal/issues/77)) 41 | * -CouldPipe now honors validation attributes ([#78](https://github.com/StartAutomating/Piecemeal/issues/78)) 42 | * -ExtensionName now supports Regex Literal Aliases ```[Alias(/Expression/)]``` ([#80](https://github.com/StartAutomating/Piecemeal/issues/80)) 43 | * -CouldRun, -CouldPipe, -Validate are no longer mutually exclusive ([#79](https://github.com/StartAutomating/Piecemeal/issues/79)) 44 | * Install-Piecemeal 45 | * Support for custom -WhereObject ([#73](https://github.com/StartAutomating/Piecemeal/issues/73)) 46 | * Support for custom -ForeachObject ([#74](https://github.com/StartAutomating/Piecemeal/issues/74)) 47 | --- 48 | 49 | ## 0.2.8 50 | * Get-Extension: 51 | * Performance Improvements ([#75](https://github.com/StartAutomating/Piecemeal/issues/75)) 52 | * Regular Expressions now IgnorePatternWhitespace ([#71](https://github.com/StartAutomating/Piecemeal/issues/71)) 53 | * -ExtensionPattern allows for multiple patterns ([#70](https://github.com/StartAutomating/Piecemeal/issues/70)) 54 | * Allowing any command type ([#65](https://github.com/StartAutomating/Piecemeal/issues/65)) 55 | * Install-Piecemeal: 56 | * Adding -RenameVariable ([#72](https://github.com/StartAutomating/Piecemeal/issues/72)) 57 | * Automatically renaming parameters when -ExtensionNoun is provided ([#60](https://github.com/StartAutomating/Piecemeal/issues/60)) 58 | --- 59 | ## 0.2.7 60 | * Get-Extension 61 | * Allowing any command type ([#65](https://github.com/StartAutomating/Piecemeal/issues/65)) 62 | * Fixing -CouldPipe ([#67](https://github.com/StartAutomating/Piecemeal/issues/67)) 63 | --- 64 | ## 0.2.6 65 | * Get-Extension: 66 | * Matching -ExtensionName support aliases ([#63](https://github.com/StartAutomating/Piecemeal/issues/63)) 67 | * Matching -ExtensionName against .DisplayName or .Name ([#61](https://github.com/StartAutomating/Piecemeal/issues/61)) 68 | * Get-Extension: -CouldPipe no longer cares about manadatory parameters ([#62](https://github.com/StartAutomating/Piecemeal/issues/62)) 69 | --- 70 | ## 0.2.5 71 | * Get-Extension: Adding -CouldPipe ([#58](https://github.com/StartAutomating/Piecemeal/issues/58)) 72 | * Get-Extension: Fixing .Tags based inclusion ([#57](https://github.com/StartAutomating/Piecemeal/issues/57)) 73 | --- 74 | ## 0.2.4 75 | * Install-Piecemeal: Making -ExtensionModule Optional ([#54](https://github.com/StartAutomating/Piecemeal/issues/54)) 76 | --- 77 | ## 0.2.3 78 | * Adding New-Extension ([#51](https://github.com/StartAutomating/Piecemeal/issues/51)) 79 | * Generating Docs ([#52](https://github.com/StartAutomating/Piecemeal/issues/52)) 80 | * Allowing New-Extension to be installed with Install-Piecemeal 81 | --- 82 | 83 | ## 0.2.2 84 | * Adding test for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 85 | * Updating Piecemeal tests (checking validation order) ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 86 | * Get-Extension: Fixing -ValidateInput logic ([#48](https://github.com/StartAutomating/Piecemeal/issues/48)) 87 | * Get-Extension: Fixing support for [ValidateScript] ([#47](https://github.com/StartAutomating/Piecemeal/issues/47)) 88 | --- 89 | 90 | ## 0.2.1 91 | * Get-Extension: Support for -AllValid ([#45](https://github.com/StartAutomating/Piecemeal/issues/45)) 92 | * Get-Extension: Removing Validation Errors when -ErrorAction is ignore ([#43](https://github.com/StartAutomating/Piecemeal/issues/43)) 93 | * Updating Piecemeal tests: Adding test for Steppable Pipeline ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)) 94 | * Updating Piecemeal Formatting (making .Extends a list) (re [#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 95 | * Get-Extension: Support for SteppablePipelines ([#42](https://github.com/StartAutomating/Piecemeal/issues/42)). Fixing .Extends bug ([#44](https://github.com/StartAutomating/Piecemeal/issues/44)) 96 | --- 97 | ## 0.2 98 | * Adding formatting for extensions ([#40](https://github.com/StartAutomating/Piecemeal/issues/40)) 99 | * Updating Piecemeal tests (account for Regex) ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 100 | * Get-Extension: Regex support for [Cmdlet] attribute ([#39](https://github.com/StartAutomating/Piecemeal/issues/39)) 101 | * Get-Extension: Adding -FullHelp, -ParameterHelp, -Example(s) ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 102 | * Get-Extension: Adding -Help ([#38](https://github.com/StartAutomating/Piecemeal/issues/38)) 103 | --- 104 | 105 | ## 0.1.10 106 | * Get-Extension: Adding -ParameterSetName ([#36](https://github.com/StartAutomating/Piecemeal/issues/36)) 107 | * Install-Extension: Adding -Force to Import-Module in Install Note ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 108 | --- 109 | 110 | ## 0.1.9 111 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets (with other attributes present) ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 112 | --- 113 | 114 | ## 0.1.8 115 | * Get-Extension: Fixing CouldRun/Run issue with multiple ParameterSets ([#31](https://github.com/StartAutomating/Piecemeal/issues/31)) 116 | * Install-Piecemeal: Improving Install Message ([#32](https://github.com/StartAutomating/Piecemeal/issues/32)) 117 | --- 118 | ## 0.1.7 119 | * Get-Extension: Now inherits ParameterSetName ([#28](https://github.com/StartAutomating/Piecemeal/issues/28)) 120 | * Get-Extension: Fixing issue properly displaying Valid Set ([#29](https://github.com/StartAutomating/Piecemeal/issues/29)) 121 | --- 122 | ## 0.1.6 123 | * Get-Extension now supports all validation attributes ([#26](https://github.com/StartAutomating/Piecemeal/issues/26)/[#25](https://github.com/StartAutomating/Piecemeal/issues/25)) 124 | --- 125 | ## 0.1.5 126 | * Extensions are now Sortable ([#19](https://github.com/StartAutomating/Piecemeal/issues/19)) 127 | * Get-Extension supports -ExtensionName ([#20](https://github.com/StartAutomating/Piecemeal/issues/20)) 128 | * Get-Extension/Install-Piecemeal renaming parameter -ExtensionNameRegex to -ExtensionPattern ([#21](https://github.com/StartAutomating/Piecemeal/issues/21)) 129 | * Get-Extension: Adding -ValidateInput / Support for [ValidateScript], [ValidateSet], [ValidatePattern] ([#22](https://github.com/StartAutomating/Piecemeal/issues/22)) 130 | --- 131 | ## 0.1.4 132 | * Get-Extension: 133 | * Can now filter extension parameters based off of command ([#17](https://github.com/StartAutomating/Piecemeal/issues/17)) 134 | --- 135 | 136 | ## 0.1.3 137 | * Get-Extension: 138 | * Added -RequireExtensionAttribute ([#13](https://github.com/StartAutomating/Piecemeal/issues/13)) 139 | * Added -RequireCmdletAttribute ([#14](https://github.com/StartAutomating/Piecemeal/issues/14)) 140 | * Respecting [CmdletBinding(DefaultParameterSetName)] ([#12](https://github.com/StartAutomating/Piecemeal/issues/12)) 141 | * Surfacing attributes ([#11](https://github.com/StartAutomating/Piecemeal/issues/11)) 142 | * Install-Piecemeal: 143 | * Allowing customization of -ExtensionName ([#10](https://github.com/StartAutomating/Piecemeal/issues/10)) 144 | * Making $script variables unique ([#9](https://github.com/StartAutomating/Piecemeal/issues/9)) 145 | * Fixing issues on Core ([#16](https://github.com/StartAutomating/Piecemeal/issues/16)) 146 | --- 147 | ## 0.1.2 148 | * Get-Extension: 149 | * Added -NoMandatoryDynamicParameter ([#6](https://github.com/StartAutomating/Piecemeal/issues/6) / [#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 150 | * [Parameter] attributes are now copied, so underlying commands are unchanged ([#7](https://github.com/StartAutomating/Piecemeal/issues/7)) 151 | --- 152 | ## 0.1.1 153 | * Get-Extension: 154 | * -Parameter not accepts ValueFromPipelineByPropertyName ([#2](https://github.com/StartAutomating/Piecemeal/issues/2)) 155 | * -CommandName now works ([#3](https://github.com/StartAutomating/Piecemeal/issues/3)) 156 | * .GetDynamicParameters now supports -NoMandatory ([#4](https://github.com/StartAutomating/Piecemeal/issues/4)) 157 | --- 158 | ## 0.1 159 | * Initial Release of Piecemeal 160 | --- 161 | -------------------------------------------------------------------------------- /docs/rss.xml: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | --- 4 | 5 | 6 | 7 | {{ site.title | xml_escape }} 8 | {{ site.description | xml_escape }} 9 | {{ site.url }}{{ site.baseurl }}/ 10 | 11 | {{ site.time | date_to_rfc822 }} 12 | {{ site.time | date_to_rfc822 }} 13 | Jekyll v{{ jekyll.version }} 14 | {% for post in site.posts limit:1000 %} 15 | {% if post.sitemap != false %} 16 | 17 | {{ post.title | xml_escape }} 18 | {{ post.content | xml_escape }} 19 | {{ post.date | date_to_rfc822 }} 20 | {{ post.url | prepend: site.baseurl | prepend: site.url }} 21 | {{ post.url | prepend: site.baseurl | prepend: site.url }} 22 | {% for tag in post.tags %} 23 | {{ tag | xml_escape }} 24 | {% endfor %} 25 | {% for cat in post.categories %} 26 | {{ cat | xml_escape }} 27 | {% endfor %} 28 | 29 | {% endif %} 30 | {% endfor %} 31 | 32 | 33 | -------------------------------------------------------------------------------- /en-us/about_Piecemeal.help.txt: -------------------------------------------------------------------------------- 1 | Piecemeal enables Easy Extensible Plugins for PowerShell. 2 | 3 | ## What is Piecemeal? 4 | 5 | Piecemeal is a little PowerShell module that helps solve a big problem: allowing functions to be extended. 6 | 7 | Piecemeal standardizes the creation of PowerShell extension scripts, and provides an embeddable engine for extensibility. 8 | 9 | #### Installing Piecemeal 10 | 11 | You can embed Piecemeal by using Install-Piecemeal: 12 | 13 | ```PowerShell 14 | Install-Piecemeal -ExtensionModuleName MyModule -Verb Get -OutputPath .\Get-MyModuleExtension.ps1 15 | ``` 16 | 17 | This will create the source for the command Get-MyModuleExtension. 18 | Get-MyModuleExtension is a modified copy of Get-Extension that returns only extensions related to MyModule. 19 | 20 | **NOTE: Your Module does not have to Require or Nest Piecemeal** 21 | 22 | #### Extending a Function 23 | 24 | Once Piecemeal has been installed into a module, you can allow any command to be extended with two easy optional steps: 25 | 26 | 1. Add dynamic parameters from extensions 27 | 28 | ```PowerShell 29 | # Add this block to any function to make the function extensible (change the name of the extension command as needed) 30 | dynamicParam { 31 | Get-MyModuleExtension -CommandName $MyInvocation.MyCommand -DynamicParameter 32 | } 33 | ``` 34 | 35 | 2. Run the extension 36 | 37 | 38 | By default, running your extension command will produce an object containing: 39 | * CommandName (the name of the command) 40 | * ExtensionCommand (the extension command) 41 | * ExtensionOutput (the output from the extension) 42 | * Done (indicates if you should stop processing additional extensions) 43 | 44 | ```PowerShell 45 | # Add this wherever you would like within the function you're extending. 46 | # This will return an object with the output of each extension 47 | Get-MyModuleExtension -Run -CommandName $MyInvocation.Mycommand 48 | ``` 49 | 50 | You can also run the extension and -Stream the results 51 | ```PowerShell 52 | # Add this wherever you would like within the function you're extending. 53 | # This will return an object with the output of each extension 54 | Get-MyModuleExtension -Run -Stream -CommandName $MyInvocation.Mycommand -Parameter (@{} + $psBoundParameters) 55 | ``` 56 | 57 | Alternatively, you can determine what -CouldRun: 58 | ```PowerShell 59 | # Add this wherever you would like within the function you're extending. 60 | # This will return an object with the output of each extension 61 | Get-MyModuleExtension -CouldRun -CommandName $MyInvocation.Mycommand -Parameter (@{} + $psBoundParameters) 62 | ``` 63 | 64 | Once you have completed these steps, your command can be extended. 65 | Extensions can exist within your module or any module that adds your module to it's tags. 66 | 67 | ### Extension Scripts Structure 68 | 69 | Extensions are simple scripts files named with the regular expression ```\.(extension|ext|ex|x)\.ps1$```. 70 | 71 | The often include the name of the module that contains the commands that are being extended, for example ```AudioGain.RoughDraft.Extension.ps1```. 72 | 73 | They can be automatically discovered in any module that adds the tag "Piecemeal", or can be discovered beneath an extension path. 74 | 75 | Extensions should include the following attributes above their parameter block: 76 | 77 | ~~~PowerShell 78 | # It's an extension (this is optional, unless you use -RequireExtensionAttribute) 79 | [Runtime.CompilerServices.Extension()] 80 | # Next one or more Cmdlet attribute define the command that is being extended. 81 | # (this is also optional, unless you use -RequireCmdletAttribute ) 82 | [Management.Automation.Cmdlet("Set","Something")] 83 | # Finally, an extension can indicate how it should be Inherited with the ComponentModel.Inheritance attribute. 84 | # An extension that is 'Inherited' should return control to the main function when it is done. This is the default 85 | # An extension that is 'NotInherited' should run and return directly. 86 | # An extension that is 'InheritedReadOnly' should only declare parameters 87 | [ComponentModel.Inheritance("Inherited")] 88 | param( 89 | # It's good practice to make at least one parameter of the extension should be mandatory. 90 | [Parameter(Mandatory)] 91 | [switch] 92 | $MyEditExtension 93 | ) 94 | ~~~ --------------------------------------------------------------------------------