diff --git a/.github/workflows/powershell.yml b/.github/workflows/powershell.yml new file mode 100644 index 0000000..65cb738 --- /dev/null +++ b/.github/workflows/powershell.yml @@ -0,0 +1,156 @@ +name: PowerShell + +on: + push: + branches: [ "main" ] + paths-ignore: + - 'docs/**' + - 'Changelog.md' + - 'README.md' + pull_request: + branches: [ "main" ] + +permissions: + contents: read + +jobs: + build: + permissions: + contents: read # for actions/checkout to fetch code + security-events: write # for github/codeql-action/upload-sarif to upload SARIF results + actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status + name: Build + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 # avoid shallow clone so nbgv can do its work. + + - name: Run PSScriptAnalyzer + uses: microsoft/psscriptanalyzer-action@6b2948b1944407914a58661c49941824d149734f + with: + # Check https://github.com/microsoft/action-psscriptanalyzer for more info about the options. + # The below set up runs PSScriptAnalyzer to your entire repository and runs some basic security rules. + path: .\src + recurse: true + # Include your own basic security rules. Removing this option will run all the rules + includeRule: '"PSAvoidGlobalAliases", "PSAvoidUsingConvertToSecureStringWithPlainText"' + output: results.sarif + + # Upload the SARIF file generated in the previous step + - name: Upload SARIF results file + uses: github/codeql-action/upload-sarif@v2 + with: + sarif_file: results.sarif + + - uses: dotnet/nbgv@1801854259a50d987aaa03b99b28cebf49faa779 + id: nbgv + + - name: Build + shell: pwsh + run: ./build.ps1 build ${{ steps.nbgv.outputs.VersionMajor }} ${{ steps.nbgv.outputs.VersionMinor }} ${{ steps.nbgv.outputs.BuildNumber }} ${{ steps.nbgv.outputs.VersionRevision }} ${{ steps.nbgv.outputs.PrereleaseVersionNoLeadingHyphen }} + + - name: Store build output + uses: actions/upload-artifact@v4 + with: + name: build + path: | + publish + retention-days: 1 + + #test7: + # permissions: + # contents: read # for actions/checkout to fetch code + # actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status + # name: Test PowerShell 7 + # needs: Build + # runs-on: ubuntu-latest + # container: + # image: mcr.microsoft.com/powershell:${{ matrix.pwshv }}-ubuntu-22.04 + # strategy: + # matrix: + # pwshv: ['7.3','7.4'] +# + # steps: + # - uses: actions/checkout@v4 +# + # - name: Download build output + # uses: actions/download-artifact@v4 + # with: + # name: build + # path: publish +# + # - name: Install Utils + # shell: pwsh + # run: | + # apt-get update + # apt-get install curl jq -y +# + # - uses: testspace-com/setup-testspace@v1 + # with: + # domain: ${{github.repository_owner}} +# + # - name: Test + # shell: pwsh + # run: ./build.ps1 test +# + # - name: Publish Results to Testspace + # run: testspace "[v${{ matrix.pwshv }}]testResults.xml" +# + # if: always() + +# test5: +# permissions: +# contents: read # for actions/checkout to fetch code +# actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status +# name: Test PowerShell 5 +# needs: Build +# runs-on: windows-latest +# steps: +# - uses: actions/checkout@v4 +# with: +# fetch-depth: 0 +# +# - name: Download build output +# uses: actions/download-artifact@v4 +# with: +# name: build +# path: publish +# +# - uses: testspace-com/setup-testspace@v1 +# with: +# domain: ${{github.repository_owner}} +# +# - name: Test +# shell: powershell +# run: ./build.ps1 test +# +# - name: Publish Results to Testspace +# run: testspace "[v5.1]testResults.xml" +# if: always() + + publish: + permissions: + contents: read # for actions/checkout to fetch code + actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status + name: Publish + #needs: [test7, test5] + runs-on: ubuntu-latest + container: + image: mcr.microsoft.com/dotnet/sdk:8.0 + if: github.ref == 'refs/heads/main' + steps: + - uses: actions/checkout@v4 + + - name: Download build output + uses: actions/download-artifact@v4 + with: + name: build + path: publish + + - name: Publish + shell: pwsh + run: ./build.ps1 publish + env: + PSPublishApiKey: ${{ secrets.NUGETAPIKEY }} diff --git a/build.ps1 b/build.ps1 index b240fda..987c32c 100644 --- a/build.ps1 +++ b/build.ps1 @@ -193,7 +193,7 @@ function Docs { Add-ModuleProperty Name -H1 | Add-ModuleProperty Description | Add-HelpDocText "Commands" -H2 | - Add-ModuleCommands -AsLinks | + Add-ModuleCommand -AsLinks | Out-HelpDoc -Path 'docs/README.md' # Individual Commands diff --git a/docs/Add-HelpDocText.md b/docs/Add-HelpDocText.md index 08e611b..b252671 100644 --- a/docs/Add-HelpDocText.md +++ b/docs/Add-HelpDocText.md @@ -34,3 +34,7 @@ Add-HelpDocText [-Text] [-HelpDoc] [-H1] [ - `[string]` **Text** _Parameter help description_ Mandatory - `[psobject]` **HelpDoc** _Parameter help description_ Mandatory, ValueFromPipeline - `[Switch]` **H1** _Parameter help description_ + +## Outputs + +- `System.Object` diff --git a/docs/Add-ModuleCommands.md b/docs/Add-ModuleCommand.md similarity index 59% rename from docs/Add-ModuleCommands.md rename to docs/Add-ModuleCommand.md index a9743eb..f893a2e 100644 --- a/docs/Add-ModuleCommands.md +++ b/docs/Add-ModuleCommand.md @@ -1,7 +1,7 @@ -# Add-ModuleCommands +# Add-ModuleCommand -Add-ModuleCommands [-HelpDoc] [-AsLinks] [] +Add-ModuleCommand [-HelpDoc] [-AsLinks] [] ## Parameters @@ -10,3 +10,7 @@ Add-ModuleCommands [-HelpDoc] [-AsLinks] [] - `[psobject]` **HelpDoc** _Parameter help description_ Mandatory, ValueFromPipeline - `[Switch]` **AsLinks** _Parameter help description_ + +## Outputs + +- `System.Object` diff --git a/docs/Add-ModuleProperty.md b/docs/Add-ModuleProperty.md index 2f87541..ad423fe 100644 --- a/docs/Add-ModuleProperty.md +++ b/docs/Add-ModuleProperty.md @@ -34,3 +34,7 @@ Add-ModuleProperty [-Property] [-HelpDoc] [-H1] [ [] +Get-HelpCommandData [-HelpSource] [] + ## Parameters ### Parameter Set 1 - `[string]` **Name** _Parameter help description_ Mandatory, ValueFromPipeline + +### Parameter Set 2 + +- `[psobject]` **HelpSource** _Parameter help description_ Mandatory, ValueFromPipeline + +## Outputs + +- `System.Object` diff --git a/docs/Get-HelpModuleData.md b/docs/Get-HelpModuleData.md index 6dcee6f..5bf596b 100644 --- a/docs/Get-HelpModuleData.md +++ b/docs/Get-HelpModuleData.md @@ -9,3 +9,7 @@ Get-HelpModuleData [-Name] [] ### Parameter Set 1 - `[string]` **Name** _Parameter help description_ Mandatory, ValueFromPipeline + +## Outputs + +- `System.Object` diff --git a/docs/New-HelpDoc.md b/docs/New-HelpDoc.md index 5270324..20c5485 100644 --- a/docs/New-HelpDoc.md +++ b/docs/New-HelpDoc.md @@ -9,3 +9,8 @@ New-HelpDoc [-HelpModuleData] [] ### Parameter Set 1 - `[psobject]` **HelpModuleData** _Parameter help description_ Mandatory, ValueFromPipeline + +## Outputs + +- `System.Collections.Hashtable +` diff --git a/docs/Out-HelpDoc.md b/docs/Out-HelpDoc.md index c07b8ed..fb32792 100644 --- a/docs/Out-HelpDoc.md +++ b/docs/Out-HelpDoc.md @@ -10,3 +10,7 @@ Out-HelpDoc [[-Path] ] [-HelpDoc] [] - `[string]` **Path** _Parameter help description_ - `[psobject]` **HelpDoc** _Parameter help description_ Mandatory, ValueFromPipeline + +## Outputs + +- `System.Object` diff --git a/docs/README.md b/docs/README.md index be43f92..6a7c4dc 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,11 +4,11 @@ Helper for building markdown docs from PowerShell Command Help. ## Commands -- [Add-HelpDocText](Add-HelpDocText.md) _No parameter help description_ -- [Add-ModuleCommands](Add-ModuleCommands.md) _No parameter help description_ -- [Add-ModuleProperty](Add-ModuleProperty.md) _No parameter help description_ -- [Get-HelpCommandData](Get-HelpCommandData.md) _No parameter help description_ -- [Get-HelpModuleData](Get-HelpModuleData.md) _No parameter help description_ -- [New-HelpDoc](New-HelpDoc.md) _No parameter help description_ -- [Out-HelpDoc](Out-HelpDoc.md) _No parameter help description_ +- [Add-HelpDocText](Add-HelpDocText.md) _No help description_ +- [Add-ModuleCommand](Add-ModuleCommand.md) _No help description_ +- [Add-ModuleProperty](Add-ModuleProperty.md) _No help description_ +- [Get-HelpCommandData](Get-HelpCommandData.md) _No help description_ +- [Get-HelpModuleData](Get-HelpModuleData.md) _No help description_ +- [New-HelpDoc](New-HelpDoc.md) _No help description_ +- [Out-HelpDoc](Out-HelpDoc.md) _No help description_ diff --git a/src/public/Add-ModuleCommands.ps1 b/src/public/Add-ModuleCommand.ps1 similarity index 95% rename from src/public/Add-ModuleCommands.ps1 rename to src/public/Add-ModuleCommand.ps1 index f80c00d..585446b 100644 --- a/src/public/Add-ModuleCommands.ps1 +++ b/src/public/Add-ModuleCommand.ps1 @@ -1,4 +1,4 @@ -function Add-ModuleCommands { +function Add-ModuleCommand { [CmdletBinding()] param ( [Parameter(Mandatory, Position = 0, ValueFromPipeline)] diff --git a/src/public/New-HelpDoc.ps1 b/src/public/New-HelpDoc.ps1 index 7a568d7..04bbfbc 100644 --- a/src/public/New-HelpDoc.ps1 +++ b/src/public/New-HelpDoc.ps1 @@ -1,5 +1,7 @@ function New-HelpDoc { + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '', Justification = 'Does not alter state')] [CmdletBinding()] + [OutputType('System.Collections.Hashtable')] param ( [Parameter(Mandatory, Position = 0, ValueFromPipeline)] [PSCustomObject] diff --git a/version.json b/version.json index 5e558fc..22852e5 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/main/src/NerdBank.GitVersioning/version.schema.json", - "version": "0.1.1", + "version": "0.2.0", "cloudBuild": { "buildNumber": { "enabled": true