A single GitHub Action, backed by a single internal PowerShell library, that
provides all of the PSModule framework's action logic behind one control
script dispatched by a Mode.
This replaces the fleet of one-capability action repositories
(Build-PSModule, Test-PSModule, Publish-PSModule, Resolve-PSModuleVersion,
Get-PSModuleSettings, Document-PSModule, Get-PesterCodeCoverage,
Get-PesterTestResults, Install-PSModuleHelpers) with one repository that shares
a single lifecycle and one reusable library.
action.yml single composite action; input `Mode` + parameters
└─ src/main.ps1 control script: imports the library, switches on Mode
└─ src/PSMA/ the single internal library, reused by every mode
├─ functions/public/ one function per mode (Build, Test, Publish, …)
└─ functions/private/ shared helpers reused across all modes
The library is loaded once and reused across every call, so version, build, test, and publish logic live in one place instead of being duplicated per action.
Callers (the PSModule reusable workflows) invoke a single action and pick the task
with Mode:
- uses: PSModule/PSMA@<sha> # vX.Y.Z
with:
Mode: Build
Name: MyModule
Version: 1.2.3| Mode | Library function | Ports logic from |
|---|---|---|
Settings |
Get-PSMASettings |
Get-PSModuleSettings |
Version |
Resolve-PSMAVersion |
Resolve-PSModuleVersion |
Build |
Build-PSMAModule |
Build-PSModule |
Test |
Test-PSMAModule |
Test-PSModule |
CodeCoverage |
Get-PSMACodeCoverage |
Get-PesterCodeCoverage |
TestResults |
Get-PSMATestResult |
Get-PesterTestResults |
Document |
Build-PSMADocumentation |
Document-PSModule |
Publish |
Publish-PSMAModule |
Publish-PSModule |
Status: foundational scaffold. The library structure, dispatcher, action interface, tests, and CI are in place; each mode function is a working skeleton with a
PORT FROM:marker where the real logic from the existing action is moved in. The shared bootstrap (Initialize-PSMA) replacesInstall-PSModuleHelpers.
This GitHub Action is a part of the PSModule framework.