From 4f2198718502032083a2aa31661d24ba3ce45ed6 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 3 May 2021 22:36:44 -0700 Subject: [PATCH 01/16] Adding GitHub Workflow Trigger: -On PullRequestMerged --- GitHub/On/PullRequestMerged.psd1 | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 GitHub/On/PullRequestMerged.psd1 diff --git a/GitHub/On/PullRequestMerged.psd1 b/GitHub/On/PullRequestMerged.psd1 new file mode 100644 index 00000000..f1553916 --- /dev/null +++ b/GitHub/On/PullRequestMerged.psd1 @@ -0,0 +1,10 @@ +@{ + pull_request = @{ + branches =@('main','master') + if = @' +${{github.event.action == 'closed' && github.event.merged == true}} +'@ + "paths-ignore" = @("docs/**","*.help.txt", "*.md") + } +} + From e3ef6334c25e0c854647c5fda749854760dbd5cd Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 10 May 2021 21:00:10 -0700 Subject: [PATCH 02/16] Adding Workflow to Auto-Update Tags --- .github/workflows/UpdateModuleTag.yml | 93 +++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 .github/workflows/UpdateModuleTag.yml diff --git a/.github/workflows/UpdateModuleTag.yml b/.github/workflows/UpdateModuleTag.yml new file mode 100644 index 00000000..a8cc3e72 --- /dev/null +++ b/.github/workflows/UpdateModuleTag.yml @@ -0,0 +1,93 @@ + +name: UpdateModuleTag +on: + - workflow_dispatch + - pull_request: + branches: + - main + - master + if: ${{github.event.action == 'closed' && github.event.merged == true}} + paths-ignore: + - 'docs/**' + - '*.help.txt' + - '*.md' + +jobs: + UpdateModuleTag: + runs-on: ubuntu-latest + steps: + - name: Check out repository + uses: actions/checkout@v2 + - name: TagModuleVersion + id: TagModuleVersion + shell: pwsh + run: | + $Parameters = @{} + $Parameters.ModulePath = ${env:ModulePath} + $Parameters.UserEmail = ${env:UserEmail} + $Parameters.UserName = ${env:UserName} + $Parameters.TagVersionFormat = ${env:TagVersionFormat} + $Parameters.TagAnnotationFormat = ${env:TagAnnotationFormat} + foreach ($k in @($parameters.Keys)) { + if ([String]::IsNullOrEmpty($parameters[$k])) { + $parameters.Remove($k) + } + } + Write-Host "::debug:: TagModuleVersion $(@(foreach ($p in $Parameters.GetEnumerator()) {'-' + $p.Key + ' ' + $p.Value}) -join ' ')" + & {param( + [string] + $ModulePath, + + # The user email associated with a git commit. + [string] + $UserEmail, + + # The user name associated with a git commit. + [string] + $UserName, + + # The tag version format (default value: 'v$(imported.Version)') + # This can expand variables. $imported will contain the imported module. + [string] + $TagVersionFormat = 'v$($imported.Version)', + + # The tag version format (default value: '$($imported.Name) $(imported.Version)') + # This can expand variables. $imported will contain the imported module. + [string] + $TagAnnotationFormat = '$($imported.Name) $($imported.Version)' + ) + + $imported = + if (-not $ModulePath) { + $orgName, $moduleName = $env:BUILD_REPOSITORY_ID -split "/" + Import-Module ".\$moduleName.psd1" -Force -PassThru -Global + } else { + Import-Module $modulePath -Force -PassThru -Global + } + + if (-not $imported) { return } + + $targetVersion =$ExecutionContext.InvokeCommand.ExpandString($TagVersionFormat) + + $versionTagExists = git tag --list | Where-Object { $_ -eq $targetVersion } + + if ($versionTagExists) { + "::warning::Version $($versionTagExists)" + return + } + + if (-not $UserName) { $UserName = $env:GITHUB_ACTOR } + if (-not $UserEmail) { $UserEmail = "$UserName@github.com" } + git config --global user.email $UserEmail + git config --global user.name $UserName + + git tag -a $targetVersion -m $ExecutionContext.InvokeCommand.ExpandString($TagAnnotationFormat) + git push --tags + + if ($env:GITHUB_ACTOR) { + exit 0 + } + + + } @Parameters + From df118ec4026221e2812cd9bd8802e6bbb58ff791 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 10 May 2021 21:09:59 -0700 Subject: [PATCH 03/16] Update UpdateModuleTag.yml Updating Workflow (Fixing Syntax issues) --- .github/workflows/UpdateModuleTag.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/UpdateModuleTag.yml b/.github/workflows/UpdateModuleTag.yml index a8cc3e72..d921303b 100644 --- a/.github/workflows/UpdateModuleTag.yml +++ b/.github/workflows/UpdateModuleTag.yml @@ -1,12 +1,10 @@ - name: UpdateModuleTag on: - - workflow_dispatch - - pull_request: + workflow_dispatch: + pull_request: branches: - main - - master - if: ${{github.event.action == 'closed' && github.event.merged == true}} + - master paths-ignore: - 'docs/**' - '*.help.txt' @@ -14,6 +12,7 @@ on: jobs: UpdateModuleTag: + if: ${{github.event.action == 'closed' && github.event.merged == true}} runs-on: ubuntu-latest steps: - name: Check out repository From d8fdbf33e309f5c1a56f3f02e6fa46f9dfb3be90 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Sun, 6 Jun 2021 16:39:29 -0700 Subject: [PATCH 04/16] RunScriptCop: Fixing renamed command --- GitHub/Steps/RunScriptCop.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GitHub/Steps/RunScriptCop.ps1 b/GitHub/Steps/RunScriptCop.ps1 index 5f485f1d..a002fbfc 100644 --- a/GitHub/Steps/RunScriptCop.ps1 +++ b/GitHub/Steps/RunScriptCop.ps1 @@ -20,5 +20,5 @@ $importedModule | Out-Host foreach ($issue in $scriptCopIssues) { - Write-GitWarning -Message "$($issue.ItemWithProblem): $($issue.Problem)" + Write-GitHubWarning -Message "$($issue.ItemWithProblem): $($issue.Problem)" } From f4efcd1a6d46137bf60494da73cb255fc0e4e705 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 7 Jun 2021 21:12:25 -0700 Subject: [PATCH 05/16] Forcing On Push to be an empty object, not a string --- GitHub/On/Push.psd1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GitHub/On/Push.psd1 b/GitHub/On/Push.psd1 index 54041420..9a30db79 100644 --- a/GitHub/On/Push.psd1 +++ b/GitHub/On/Push.psd1 @@ -1,2 +1,2 @@ -'push' +@{'push'=@{}} From 2edaa6d9f77c58e3f3fcd84b2375d575e26d6557 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 7 Jun 2021 21:14:54 -0700 Subject: [PATCH 06/16] Forcing workflow_dispatch to be an empty object, rather than a string --- GitHub/On/Demand.psd1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GitHub/On/Demand.psd1 b/GitHub/On/Demand.psd1 index 68afe641..2a6c0431 100644 --- a/GitHub/On/Demand.psd1 +++ b/GitHub/On/Demand.psd1 @@ -1 +1 @@ -'workflow_dispatch' \ No newline at end of file +@{'workflow_dispatch'=@{}} \ No newline at end of file From 63f851a49310349aea4c2b29bda6595d9880a223 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 7 Jun 2021 21:27:28 -0700 Subject: [PATCH 07/16] Initial draft of PublishPowerShellGallery --- GitHub/Steps/PublishPowerShellGallery.ps1 | 58 +++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 GitHub/Steps/PublishPowerShellGallery.ps1 diff --git a/GitHub/Steps/PublishPowerShellGallery.ps1 b/GitHub/Steps/PublishPowerShellGallery.ps1 new file mode 100644 index 00000000..c0380fde --- /dev/null +++ b/GitHub/Steps/PublishPowerShellGallery.ps1 @@ -0,0 +1,58 @@ +param( +[string] +$ModulePath +) +$gitHubEvent = if ($env:GITHUB_EVENT_PATH) { + [IO.File]::ReadAllText($env:GITHUB_EVENT_PATH) | ConvertFrom-Json +} else { $null } + + +@" +::group::GitHubEvent +$($gitHubEvent | ConvertTo-Json -Depth 100) +::endgroup:: +"@ | Out-Host + +if (-not ($gitHubEvent.pullrequest.merged) -and (-not $gitHubEvent.psobject.properties['input'])) { + "::warning::Pull Request has not merged, skipping" | Out-Host + return +} + + +$imported = +if (-not $ModulePath) { + $orgName, $moduleName = $env:GITHUB_REPOSITORY -split "/" + Import-Module ".\$moduleName.psd1" -Force -PassThru -Global +} else { + Import-Module $modulePath -Force -PassThru -Global +} + +if (-not $imported) { return } + +$foundModule = try { Find-Module -Name $imported.Name -ErrorAction SilentlyContinue } catch {} + +if ($foundModule -and $foundModule.Version -ge $imported.Version) { + "::warning::Gallery Version of $moduleName is more recent ($($foundModule.Version) >= $($imported.Version))" | Out-Host +} else { + + $gk = '${{secrets.GalleryKey}}' + + $moduleTempPath = Join-Path $pwd $moduleName + + Write-Host "Staging Directory: $ModuleTempPath" + + $imported | Split-Path | Copy-Item -Destination $moduleTempPath -Recurse + $moduleGitPath = Join-Path $moduleTempPath '.git' + Write-Host "Removing .git directory" + Remove-Item -Recurse -Force $moduleGitPath + Write-Host "Module Files:" + Get-ChildItem $moduleTempPath -Recurse + Write-Host "Publishing $moduleName [$($imported.Version)] to Gallery" + Publish-Module -Path $moduleTempPath -NuGetApiKey $gk + if ($?) { + Write-Host "Published to Gallery" + } else { + Write-Host "Gallery Publish Failed" + exit 1 + } +} From 0d279c48dcdd4ec81074117b735c14e99401570b Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 10 Jun 2021 15:07:12 -0700 Subject: [PATCH 08/16] New-GitHubWorkflow: Forcing 'On' to be a SingleItem --- New-GitHubWorkflow.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/New-GitHubWorkflow.ps1 b/New-GitHubWorkflow.ps1 index d16b6b36..3b6266c6 100644 --- a/New-GitHubWorkflow.ps1 +++ b/New-GitHubWorkflow.ps1 @@ -96,7 +96,7 @@ function New-GitHubWorkflow { $workflowOptions = @{} $expandGitHubBuildStep = @{ BuildSystem = $mynoun - SingleItemName = 'On','Name' + SingleItemName = 'Name','On' DictionaryItemName = 'Jobs', 'Inputs','Outputs' BuildOption = $workflowOptions } From 9dbb5ee977f8931928fd8986c3f2cd6828e68410 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 10 Jun 2021 15:08:03 -0700 Subject: [PATCH 09/16] Expand-BuildStep: Forcing SingleItemName values to be single items. --- Expand-BuildStep.ps1 | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/Expand-BuildStep.ps1 b/Expand-BuildStep.ps1 index 57a561c6..aeb5dcf6 100644 --- a/Expand-BuildStep.ps1 +++ b/Expand-BuildStep.ps1 @@ -108,7 +108,8 @@ } $splatMe.Remove('StepMap') - :nextKey foreach ($kv in $stepMap.GetEnumerator()) { + + :nextKey foreach ($kv in $stepMap.GetEnumerator()) { if ($kv.Key.EndsWith('s') -and -not $singleton) { # Already pluralized $thingType = $kv.Key.Substring(0,$kv.Key.Length -1) $propName = $kv.Key @@ -117,8 +118,9 @@ $propName = $kv.Key } else { $thingType = $kv.Key + $thingTypePlural = $kv.Key + 's' $propName = - if ($SingleItemName -notcontains $thingType -and + if ($SingleItemName -notcontains $thingType -and $thingType -notmatch '\W$' -and $theComponentNames.Keys -contains $thingType) { $kv.Key.Substring(0,1).ToLower() + $kv.Key.Substring(1) + 's' @@ -312,6 +314,26 @@ $outObject[$propName] -isnot [Collections.IList]) { $outObject[$propName] = @($outObject[$propName]) } + + if ($SingleItemName -contains $propName -and + $outObject[$propName] -is [Collections.IList]) { + $newOut = [Ordered]@{} + foreach ($obj in $outObject[$propName]) { + if ($obj -is [Collections.IDictionary]) { + $k = @($obj.Keys)[0] + if ($obj.Count -eq 1 -and + $obj.Keys -contains $k) { + $newOut[$k] = $obj.$k + } else { + $newOut[$k] = $obj + } + } + elseif ($obj -is [string]) { + $newOut[$obj] = [Ordered]@{} + } + } + $outObject[$propName] = $newOut + } } } $outObject From e9d45f5cd0cfa9eeb02ce06001d6d09818f81b62 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Thu, 10 Jun 2021 15:45:31 -0700 Subject: [PATCH 10/16] Initial commit of PublishPowerShellGallery GitHub Step --- GitHub/Steps/PublishPowerShellGallery.ps1 | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/GitHub/Steps/PublishPowerShellGallery.ps1 b/GitHub/Steps/PublishPowerShellGallery.ps1 index c0380fde..f70f877b 100644 --- a/GitHub/Steps/PublishPowerShellGallery.ps1 +++ b/GitHub/Steps/PublishPowerShellGallery.ps1 @@ -13,7 +13,8 @@ $($gitHubEvent | ConvertTo-Json -Depth 100) ::endgroup:: "@ | Out-Host -if (-not ($gitHubEvent.pullrequest.merged) -and (-not $gitHubEvent.psobject.properties['input'])) { +if (-not ($gitHubEvent.head_commit.message -match "Merge Pull Request #(?\d+)") -and + (-not $gitHubEvent.psobject.properties['inputs'])) { "::warning::Pull Request has not merged, skipping" | Out-Host return } @@ -35,16 +36,25 @@ if ($foundModule -and $foundModule.Version -ge $imported.Version) { "::warning::Gallery Version of $moduleName is more recent ($($foundModule.Version) >= $($imported.Version))" | Out-Host } else { - $gk = '${{secrets.GalleryKey}}' + $gk = '${{secrets.GALLERYKEY}}' - $moduleTempPath = Join-Path $pwd $moduleName + $rn = Get-Random + $moduleTempFolder = Join-Path $pwd "$rn" + $moduleTempPath = Join-Path $moduleTempFolder $moduleName + New-Item -ItemType Directory -Path $moduleTempPath -Force | Out-Host Write-Host "Staging Directory: $ModuleTempPath" - $imported | Split-Path | Copy-Item -Destination $moduleTempPath -Recurse + $imported | Split-Path | + Get-ChildItem -Force | + Where-Object Name -NE $rn | + Copy-Item -Destination $moduleTempPath -Recurse + $moduleGitPath = Join-Path $moduleTempPath '.git' Write-Host "Removing .git directory" - Remove-Item -Recurse -Force $moduleGitPath + if (Test-Path $moduleGitPath) { + Remove-Item -Recurse -Force $moduleGitPath + } Write-Host "Module Files:" Get-ChildItem $moduleTempPath -Recurse Write-Host "Publishing $moduleName [$($imported.Version)] to Gallery" From 66a965b9c66c467621414a83267471f83a23e3f5 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 14 Jun 2021 15:59:11 -0700 Subject: [PATCH 11/16] Convert-BuildStep: Support for BuildOption.RootDirectory. --- Convert-BuildStep.ps1 | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Convert-BuildStep.ps1 b/Convert-BuildStep.ps1 index f2054771..c505d802 100644 --- a/Convert-BuildStep.ps1 +++ b/Convert-BuildStep.ps1 @@ -422,6 +422,20 @@ $collectParameters Import-Module `$($modulePathVariable) -Force -PassThru $logParameters $Name `@Parameters +"@) + $innerScript = $sb + } elseif ($BuildOption.RootDirectory -and $ScriptBlock.File -and + $ScriptBlock.File -like "$($BuildOption.RootDirectory)*") { + $relativeScriptPath = + $ScriptBlock.File.Substring( + $BuildOption.RootDirectory.Length + ).TrimStart( + [IO.Path]::DirectorySeparatorChar + ).Replace('\','/') + $sb = [ScriptBlock]::Create(@" +$CollectParameters +$logParameters +& './$relativeScriptPath' `@Parameters "@) $innerScript = $sb } else { From 7a759ead75e7f4047e71d5174579df8eae6ca451 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Mon, 14 Jun 2021 16:00:13 -0700 Subject: [PATCH 12/16] New-GitHubWorkflow: Propagating .RootDirectory into $WorkflowOptions. --- New-GitHubWorkflow.ps1 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/New-GitHubWorkflow.ps1 b/New-GitHubWorkflow.ps1 index 3b6266c6..339208ea 100644 --- a/New-GitHubWorkflow.ps1 +++ b/New-GitHubWorkflow.ps1 @@ -133,6 +133,8 @@ function New-GitHubWorkflow { #endregion Map Dynamic Input + if ($RootDirectory) { $workflowOptions.RootDirectory = $RootDirectory} + #region Expand Input $expandSplat = @{} + $PSBoundParameters foreach ($k in @($expandSplat.Keys)) { From d1467519ae1d8eeda73546393618c4b4facd31c9 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Tue, 15 Jun 2021 11:32:38 -0700 Subject: [PATCH 13/16] Adding Workflow Job Definition for PublishToGallery --- GitHub/Jobs/PublishToGallery.psd1 | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 GitHub/Jobs/PublishToGallery.psd1 diff --git a/GitHub/Jobs/PublishToGallery.psd1 b/GitHub/Jobs/PublishToGallery.psd1 new file mode 100644 index 00000000..bbf7f565 --- /dev/null +++ b/GitHub/Jobs/PublishToGallery.psd1 @@ -0,0 +1,12 @@ +@{ + "runs-on" = "ubuntu-latest" + if = '${{ success() }}' + steps = @( + @{ + name = 'Check out repository' + uses = 'actions/checkout@v2' + }, 'PublishPowerShellGallery' + ) +} + + From c328dafd428bc75dd7a53103201f0037903a2025 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Tue, 15 Jun 2021 11:33:17 -0700 Subject: [PATCH 14/16] Adding Workflow Job Definition for UpdateModuleTag --- GitHub/Jobs/UpdateModuleTag.psd1 | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 GitHub/Jobs/UpdateModuleTag.psd1 diff --git a/GitHub/Jobs/UpdateModuleTag.psd1 b/GitHub/Jobs/UpdateModuleTag.psd1 new file mode 100644 index 00000000..f110cc07 --- /dev/null +++ b/GitHub/Jobs/UpdateModuleTag.psd1 @@ -0,0 +1,11 @@ +@{ + "runs-on" = "ubuntu-latest" + if = '${{ success() }}' + steps = @( + @{ + name = 'Check out repository' + uses = 'actions/checkout@v2' + }, 'TagModuleVersion' + ) +} + From 9f52d4e7741ee0a874d8479b878a4114f5df854f Mon Sep 17 00:00:00 2001 From: James Brundage Date: Tue, 15 Jun 2021 11:33:50 -0700 Subject: [PATCH 15/16] Adding Workflow Step TagModuleVersion --- GitHub/Steps/TagModuleVersion.ps1 | 81 +++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 GitHub/Steps/TagModuleVersion.ps1 diff --git a/GitHub/Steps/TagModuleVersion.ps1 b/GitHub/Steps/TagModuleVersion.ps1 new file mode 100644 index 00000000..f60a41ad --- /dev/null +++ b/GitHub/Steps/TagModuleVersion.ps1 @@ -0,0 +1,81 @@ +param( +[string] +$ModulePath, + +# The user email associated with a git commit. +[string] +$UserEmail, + +# The user name associated with a git commit. +[string] +$UserName, + +# The tag version format (default value: 'v$(imported.Version)') +# This can expand variables. $imported will contain the imported module. +[string] +$TagVersionFormat = 'v$($imported.Version)', + +# The tag version format (default value: '$($imported.Name) $(imported.Version)') +# This can expand variables. $imported will contain the imported module. +[string] +$TagAnnotationFormat = '$($imported.Name) $($imported.Version)' +) + + +$gitHubEvent = if ($env:GITHUB_EVENT_PATH) { + [IO.File]::ReadAllText($env:GITHUB_EVENT_PATH) | ConvertFrom-Json +} else { $null } + + +@" +::group::GitHubEvent +$($gitHubEvent | ConvertTo-Json -Depth 100) +::endgroup:: +"@ | Out-Host + +if (-not ($gitHubEvent.head_commit.message -match "Merge Pull Request #(?\d+)") -and + (-not $gitHubEvent.psobject.properties['inputs'])) { + "::warning::Pull Request has not merged, skipping" | Out-Host + return +} + + + +$imported = +if (-not $ModulePath) { + $orgName, $moduleName = $env:GITHUB_REPOSITORY -split "/" + Import-Module ".\$moduleName.psd1" -Force -PassThru -Global +} else { + Import-Module $modulePath -Force -PassThru -Global +} + +if (-not $imported) { return } + +$targetVersion =$ExecutionContext.InvokeCommand.ExpandString($TagVersionFormat) +$existingTags = git tag --list + +@" +Target Version: $targetVersion + +Existing Tags: +$($existingTags -join [Environment]::NewLine) +"@ | Out-Host + +$versionTagExists = $existingTags | Where-Object { $_ -match $targetVersion } + +if ($versionTagExists) { + "::warning::Version $($versionTagExists)" + return +} + +if (-not $UserName) { $UserName = $env:GITHUB_ACTOR } +if (-not $UserEmail) { $UserEmail = "$UserName@github.com" } +git config --global user.email $UserEmail +git config --global user.name $UserName + +git tag -a $targetVersion -m $ExecutionContext.InvokeCommand.ExpandString($TagAnnotationFormat) +git push origin --tags + +if ($env:GITHUB_ACTOR) { + exit 0 +} \ No newline at end of file From 654bbde7fb86670d6ef5bb0122d50926f8a970d8 Mon Sep 17 00:00:00 2001 From: James Brundage Date: Tue, 15 Jun 2021 11:34:19 -0700 Subject: [PATCH 16/16] Adding Workflow On PullToMain trigger --- GitHub/On/PullToMain.psd1 | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 GitHub/On/PullToMain.psd1 diff --git a/GitHub/On/PullToMain.psd1 b/GitHub/On/PullToMain.psd1 new file mode 100644 index 00000000..fae38d86 --- /dev/null +++ b/GitHub/On/PullToMain.psd1 @@ -0,0 +1,8 @@ +@{ + pull_request = @{ + branches =@('main','master') + "paths-ignore" = @("docs/**","*.help.txt", "*.md") + } +} + +