Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
48e91f5
🚀[Feature]: Enhance workflow orchestration with detailed Get-Settings…
MariusStorhaug Oct 14, 2025
72425c4
feat: Complete planning phase for settings-driven workflow configuration
MariusStorhaug Oct 14, 2025
2b3ebbc
feat: Complete planning phase for settings-driven workflow configuration
MariusStorhaug Oct 14, 2025
2dfe6ad
feat: Add prompts for project management workflows including constitu…
MariusStorhaug Oct 14, 2025
fa9d515
Remove outdated specifications and documentation for the settings-dri…
MariusStorhaug Oct 14, 2025
fdcd3be
Update plan-template and README for improved clarity and structure
MariusStorhaug Oct 14, 2025
a652168
Implement feature X to enhance user experience and optimize performance
MariusStorhaug Oct 14, 2025
ae20e5d
docs(readme): restructure, dedupe layout/config, tighten quickstart
MariusStorhaug Oct 14, 2025
af18391
docs(readme): update section title from 'Quickstart' to 'Getting star…
MariusStorhaug Oct 14, 2025
1af923a
docs(readme): enhance clarity and structure by updating instructions …
MariusStorhaug Oct 14, 2025
277785f
docs(readme): update phase details to clarify workflow initialization…
MariusStorhaug Oct 14, 2025
dedfe9b
docs(readme): update pipeline steps section for clarity and accuracy
MariusStorhaug Oct 15, 2025
5e64da7
Implement feature X to enhance user experience and fix bug Y in module Z
MariusStorhaug Oct 15, 2025
72ac781
Implement feature X to enhance user experience and optimize performance
MariusStorhaug Oct 15, 2025
5070423
docs(PSModule.md): update header format for consistency
MariusStorhaug Oct 15, 2025
6e0489f
docs(readme): enhance clarity in setup instructions for GitHub Pages …
MariusStorhaug Oct 15, 2025
81e1874
docs(readme): improve formatting and clarity in setup instructions
MariusStorhaug Oct 17, 2025
dcf7a1a
docs(readme): enhance introduction for clarity and detail on workflow…
MariusStorhaug Oct 17, 2025
bc61333
docs(readme): improve clarity and formatting in setup instructions fo…
MariusStorhaug Oct 17, 2025
9d5a073
docs(readme): update documentation for clarity and structure, enhanci…
MariusStorhaug Oct 19, 2025
fb81954
docs(readme): add important note on removing branch protection for Gi…
MariusStorhaug Oct 19, 2025
8af041f
docs(readme): correct numbering in setup instructions for clarity
MariusStorhaug Oct 19, 2025
4013f98
docs(readme): adjust formatting for important note on branch protecti…
MariusStorhaug Oct 19, 2025
30fd1c7
docs(readme): update instructions to remove branch protection for Git…
MariusStorhaug Oct 19, 2025
91d20de
docs(readme): enhance clarity by using strong formatting for the GitH…
MariusStorhaug Oct 19, 2025
37349d0
docs(readme): update instructions for GitHub Pages environment and co…
MariusStorhaug Oct 19, 2025
b55fa11
docs(readme): correct numbering in setup instructions and clarify Git…
MariusStorhaug Oct 19, 2025
58b922a
docs(readme): clarify GitHub Pages environment setup and remove branc…
MariusStorhaug Oct 19, 2025
9e0fcd0
docs(readme): improve clarity in API key setup instructions and refor…
MariusStorhaug Oct 19, 2025
e8667fa
docs(readme): add link to scenario matrix for clearer workflow outcom…
MariusStorhaug Oct 19, 2025
fedad44
docs(readme): enhance table of contents and clarify workflow sections…
MariusStorhaug Oct 19, 2025
39224ab
docs(readme): update workflow overview and repository structure for i…
MariusStorhaug Oct 19, 2025
c799bf1
docs(readme): clarify workflow steps and enhance descriptions for bet…
MariusStorhaug Oct 19, 2025
792743a
docs(readme): clarify linting process description for improved unders…
MariusStorhaug Oct 23, 2025
2452230
Add dynamic environment variable for settings across jobs
MariusStorhaug Jan 6, 2026
a76b56f
Merge branch 'main' of https://github.com/PSModule/Process-PSModule i…
MariusStorhaug Jan 6, 2026
e02a92b
Merge branch 'main' of https://github.com/PSModule/Process-PSModule i…
MariusStorhaug Jan 6, 2026
12d0c59
refactor: streamline settings handling and linting workflow integration
MariusStorhaug Jan 10, 2026
dff7240
Refactor GitHub workflows to use a centralized settings object
MariusStorhaug Jan 10, 2026
4c2dc40
feat: add additional workflow configuration options for debugging and…
MariusStorhaug Jan 10, 2026
0d00563
Merge branch 'main' of https://github.com/PSModule/Process-PSModule i…
MariusStorhaug Jan 10, 2026
8ef2323
refactor: update input handling for Get-CodeCoverage and Get-TestResu…
MariusStorhaug Jan 10, 2026
d3874ef
refactor: update Lint-Module job to use matrix strategy for OS and se…
MariusStorhaug Jan 10, 2026
8fce819
fix: specify shell type for Load dynamic envs step in Lint-Repository…
MariusStorhaug Jan 10, 2026
5300216
feat: add output handling for Build-Site job in workflow
MariusStorhaug Jan 10, 2026
989df80
refactor: clean up whitespace in workflow and README files
MariusStorhaug Jan 10, 2026
6fdece6
docs: improve formatting and clarity in README sections
MariusStorhaug Jan 10, 2026
a689554
feat: add input handling for Settings in Build-Site job
MariusStorhaug Jan 11, 2026
8757fa0
fix: update Get-Settings action to specific version in workflow
MariusStorhaug Jan 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 12 additions & 11 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@

## Terminal Commands

When executing terminal commands (using `run_in_terminal` or similar tools):

- Prefer MCP server calls over command-line tools when possible.
- **ALWAYS** send commands into `pwsh -Command` to ensure proper execution.
- These commands must be enclosed in single quotes.
- Escape any single quotes within the command by doubling them (e.g., `It's` becomes `It''s`).
- Use double quotes for string with variables or expressions inside the single-quoted command.
- When running scripts within the [scripts](../.specify/scripts/) folder, just run them directly (shell is default PowerShell).
- For other commands, send them into `pwsh -Command` to ensure proper execution.

### Quoting in PowerShell

Proper quoting is essential in PowerShell to prevent parsing errors and ensure correct command execution.

- **Direct script execution**: Scripts run directly in PowerShell use standard PowerShell quoting rules. Double quotes expand variables and expressions, while single quotes are literal. No additional shell escaping is needed.

- **Via `pwsh -Command`**: Commands are passed as strings to PowerShell. Enclose the entire command in single quotes to treat it as a literal string. Escape single quotes within the command by doubling them (e.g., `It's` becomes `It''s`). Use double quotes within the command for variable expansion, but ensure the outer single quotes protect the string from shell interpretation.

## Other instructions
For arguments containing single quotes, prefer double-quoting the argument inside the command string.

| Tech | Instruction file |
|------------|-------------------------------------------------------------|
| PowerShell | [pwsh.instructions.md](./instructions/pwsh.instructions.md) |
| Markdown | [md.instructions.md](./instructions/md.instructions.md) |
Example: `pwsh -Command 'Write-Host "I''m Groot"'`
File renamed without changes.
56 changes: 56 additions & 0 deletions .github/workflows/AfterAll-ModuleLocal.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: AfterAll-ModuleLocal

on:
workflow_call:
inputs:
Settings:
type: string
description: The complete settings object including test suites.
required: true

permissions:
contents: read # to checkout the repo

jobs:
AfterAll-ModuleLocal:
name: AfterAll-ModuleLocal
runs-on: ubuntu-latest
env:
SETTINGS: ${{ inputs.Settings }}
steps:
- name: Checkout Code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
fetch-depth: 0

- name: Run AfterAll Teardown Scripts
if: always()
uses: PSModule/GitHub-Script@8b9d2739d6896975c0e5448d2021ae2b94b6766a # v1.7.6
with:
Name: AfterAll-ModuleLocal
ShowInfo: false
ShowOutput: true
Debug: ${{ fromJson(inputs.Settings).Debug }}
Prerelease: ${{ fromJson(inputs.Settings).Prerelease }}
Verbose: ${{ fromJson(inputs.Settings).Verbose }}
Version: ${{ fromJson(inputs.Settings).Version }}
WorkingDirectory: ${{ fromJson(inputs.Settings).WorkingDirectory }}
Script: |
LogGroup "Running AfterAll Teardown Scripts" {
$afterAllScript = 'tests/AfterAll.ps1'

if (-not (Test-Path $afterAllScript)) {
Write-Host "No AfterAll.ps1 script found at [$afterAllScript] - exiting successfully"
exit 0
}

Write-Host "Running AfterAll teardown script: $afterAllScript"
try {
& $afterAllScript
Write-Host "AfterAll script completed successfully: $afterAllScript"
} catch {
Write-Warning "AfterAll script failed: $afterAllScript - $_"
# Don't throw for teardown scripts to ensure other cleanup scripts can run
}
}
55 changes: 55 additions & 0 deletions .github/workflows/BeforeAll-ModuleLocal.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: BeforeAll-ModuleLocal

on:
workflow_call:
inputs:
Settings:
type: string
description: The complete settings object including test suites.
required: true

permissions:
contents: read # to checkout the repo

jobs:
BeforeAll-ModuleLocal:
name: BeforeAll-ModuleLocal
runs-on: ubuntu-latest
env:
Settings: ${{ inputs.Settings }}
steps:
- name: Checkout Code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
fetch-depth: 0

- name: Run BeforeAll Setup Scripts
uses: PSModule/GitHub-Script@8b9d2739d6896975c0e5448d2021ae2b94b6766a # v1.7.6
with:
Name: BeforeAll-ModuleLocal
ShowInfo: false
ShowOutput: true
Debug: ${{ fromJson(inputs.Settings).Debug }}
Prerelease: ${{ fromJson(inputs.Settings).Prerelease }}
Verbose: ${{ fromJson(inputs.Settings).Verbose }}
Version: ${{ fromJson(inputs.Settings).Version }}
WorkingDirectory: ${{ fromJson(inputs.Settings).WorkingDirectory }}
Script: |
LogGroup "Running BeforeAll Setup Scripts" {
$beforeAllScript = 'tests/BeforeAll.ps1'

if (-not (Test-Path $beforeAllScript)) {
Write-Host "No BeforeAll.ps1 script found at [$beforeAllScript] - exiting successfully"
exit 0
}

Write-Host "Running BeforeAll setup script: $beforeAllScript"
try {
& $beforeAllScript
Write-Host "BeforeAll script completed successfully: $beforeAllScript"
} catch {
Write-Error "BeforeAll script failed: $beforeAllScript - $_"
throw
}
}
60 changes: 15 additions & 45 deletions .github/workflows/Build-Docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,40 +3,10 @@ name: Build-Docs
on:
workflow_call:
inputs:
Name:
Settings:
type: string
description: The name of the module to process. Scripts default to the repository name if nothing is specified.
required: false
Debug:
type: boolean
description: Enable debug output.
required: false
default: false
Verbose:
type: boolean
description: Enable verbose output.
required: false
default: false
Version:
type: string
description: Specifies the version of the GitHub module to be installed. The value must be an exact version.
required: false
default: ''
Prerelease:
type: boolean
description: Whether to use a prerelease version of the 'GitHub' module.
required: false
default: false
WorkingDirectory:
type: string
description: The working directory where the script will run from.
required: false
default: '.'
ShowSummaryOnSuccess:
type: boolean
description: Whether to show the super-linter summary on success.
required: false
default: false
description: The complete settings object.
required: true

permissions:
contents: read # to checkout the repo
Expand All @@ -57,30 +27,30 @@ jobs:
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
name: module
path: ${{ inputs.WorkingDirectory }}/outputs/module
path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/outputs/module

- name: Document module
uses: PSModule/Document-PSModule@15dc407c99e408fc0a4023d4f16aee2a5507ba74 # v1.0.12
with:
Name: ${{ inputs.Name }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
Name: ${{ fromJson(inputs.Settings).Name }}
WorkingDirectory: ${{ fromJson(inputs.Settings).WorkingDirectory }}

- name: Upload docs artifact
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: docs
path: ${{ inputs.WorkingDirectory }}/outputs/docs
path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/outputs/docs
if-no-files-found: error
retention-days: 1

- name: Commit all changes
uses: PSModule/GitHub-Script@8b9d2739d6896975c0e5448d2021ae2b94b6766a # v1.7.6
with:
Debug: ${{ inputs.Debug }}
Prerelease: ${{ inputs.Prerelease }}
Verbose: ${{ inputs.Verbose }}
Version: ${{ inputs.Version }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
Debug: ${{ fromJson(inputs.Settings).Debug }}
Prerelease: ${{ fromJson(inputs.Settings).Prerelease }}
Verbose: ${{ fromJson(inputs.Settings).Verbose }}
Version: ${{ fromJson(inputs.Settings).Version }}
WorkingDirectory: ${{ fromJson(inputs.Settings).WorkingDirectory }}
Script: |
# Rename the gitignore file to .gitignore.bak
if (Test-Path -Path .gitignore) {
Expand All @@ -106,8 +76,8 @@ jobs:
env:
RUN_LOCAL: true
DEFAULT_BRANCH: main
DEFAULT_WORKSPACE: ${{ inputs.WorkingDirectory }}
FILTER_REGEX_INCLUDE: ${{ inputs.WorkingDirectory }}/outputs/docs
DEFAULT_WORKSPACE: ${{ fromJson(inputs.Settings).WorkingDirectory }}
FILTER_REGEX_INCLUDE: ${{ fromJson(inputs.Settings).WorkingDirectory }}/outputs/docs
ENABLE_GITHUB_ACTIONS_GROUP_TITLE: true
GITHUB_TOKEN: ${{ github.token }}
VALIDATE_ALL_CODEBASE: true
Expand All @@ -123,7 +93,7 @@ jobs:
SAVE_SUPER_LINTER_SUMMARY: true

- name: Post super-linter summary
if: failure() || inputs.ShowSummaryOnSuccess == true
if: failure() || fromJson(inputs.Settings).Build.Docs.ShowSummaryOnSuccess == true
shell: pwsh
run: |
$summaryPath = Join-Path $env:GITHUB_WORKSPACE 'super-linter-output' 'super-linter-summary.md'
Expand Down
15 changes: 5 additions & 10 deletions .github/workflows/Build-Module.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,15 @@ name: Build-Module
on:
workflow_call:
inputs:
Name:
Settings:
type: string
description: The name of the module to process. Scripts default to the repository name if nothing is specified.
required: false
description: The settings object as a JSON string.
required: true
ArtifactName:
type: string
description: Name of the artifact to upload.
required: false
default: module
WorkingDirectory:
type: string
description: The working directory where the script will run from.
required: false
default: '.'

permissions:
contents: read # to checkout the repository
Expand All @@ -37,6 +32,6 @@ jobs:
- name: Build module
uses: PSModule/Build-PSModule@fe8cc14a7192066cc46cb9514659772ebde05849 # v4.0.9
with:
Name: ${{ inputs.Name }}
Name: ${{ fromJson(inputs.Settings).Name }}
ArtifactName: ${{ inputs.ArtifactName }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
WorkingDirectory: ${{ fromJson(inputs.Settings).WorkingDirectory }}
49 changes: 12 additions & 37 deletions .github/workflows/Build-Site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,10 @@ name: Build-Site
on:
workflow_call:
inputs:
Name:
Settings:
type: string
description: The name of the module to process. Scripts default to the repository name if nothing is specified.
required: false
Debug:
type: boolean
description: Enable debug output.
required: false
default: false
Verbose:
type: boolean
description: Enable verbose output.
required: false
default: false
Version:
type: string
description: Specifies the version of the GitHub module to be installed. The value must be an exact version.
required: false
default: ''
Prerelease:
type: boolean
description: Whether to use a prerelease version of the 'GitHub' module.
required: false
default: false
WorkingDirectory:
type: string
description: The working directory where the script will run from.
required: false
default: '.'
description: The complete settings object.
required: true

permissions:
contents: read # to checkout the repo
Expand All @@ -54,7 +29,7 @@ jobs:
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
name: docs
path: ${{ inputs.WorkingDirectory }}/outputs/docs
path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/outputs/docs

- name: Install mkdocs-material
shell: pwsh
Expand All @@ -67,16 +42,16 @@ jobs:
- name: Structure site
uses: PSModule/GitHub-Script@8b9d2739d6896975c0e5448d2021ae2b94b6766a # v1.7.6
with:
Debug: ${{ inputs.Debug }}
Prerelease: ${{ inputs.Prerelease }}
Verbose: ${{ inputs.Verbose }}
Version: ${{ inputs.Version }}
WorkingDirectory: ${{ inputs.WorkingDirectory }}
Debug: ${{ fromJson(inputs.Settings).Debug }}
Prerelease: ${{ fromJson(inputs.Settings).Prerelease }}
Verbose: ${{ fromJson(inputs.Settings).Verbose }}
Version: ${{ fromJson(inputs.Settings).Version }}
WorkingDirectory: ${{ fromJson(inputs.Settings).WorkingDirectory }}
Script: |
LogGroup "Get folder structure" {
$functionDocsFolder = New-Item -Path "outputs/site/docs/Functions" -ItemType Directory -Force
Copy-Item -Path "outputs/docs/*" -Destination "outputs/site/docs/Functions" -Recurse -Force
$moduleName = [string]::IsNullOrEmpty('${{ inputs.Name }}') ? $env:GITHUB_REPOSITORY_NAME : '${{ inputs.Name }}'
$moduleName = [string]::IsNullOrEmpty('${{ fromJson(inputs.Settings).Name }}') ? $env:GITHUB_REPOSITORY_NAME : '${{ fromJson(inputs.Settings).Name }}'
$ModuleSourcePath = Resolve-Path 'src' | Select-Object -ExpandProperty Path
$SiteOutputPath = Resolve-Path 'outputs/site' | Select-Object -ExpandProperty Path

Expand Down Expand Up @@ -162,7 +137,7 @@ jobs:
}

- name: Build mkdocs-material project
working-directory: ${{ inputs.WorkingDirectory }}/outputs/site
working-directory: ${{ fromJson(inputs.Settings).WorkingDirectory }}/outputs/site
shell: pwsh
run: |
LogGroup 'Build docs - mkdocs build - content' {
Expand All @@ -176,5 +151,5 @@ jobs:
- uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4.0.0
with:
name: github-pages
path: ${{ inputs.WorkingDirectory }}/_site
path: ${{ fromJson(inputs.Settings).WorkingDirectory }}/_site
retention-days: 1
Loading
Loading