Skip to content

Commit 277785f

Browse files
docs(readme): update phase details to clarify workflow initialization and module building processes
1 parent 1af923a commit 277785f

File tree

1 file changed

+55
-34
lines changed

1 file changed

+55
-34
lines changed

README.md

Lines changed: 55 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -355,49 +355,79 @@ The workflow inspects this structure to decide what to compile, document, and pu
355355

356356
## Phase details
357357

358-
### Discover and Plan
358+
### Get settings
359359

360+
The Get-Settings job initializes the workflow by reading and processing configuration settings, determining the module name, and establishing
361+
the test execution matrix. This phase ensures all downstream jobs operate with consistent, repository-specific parameters.
360362

363+
**What it does:**
361364

362-
### Build Module
365+
1. Gets settings from the `.github/PSModule.yml` (or equivalent JSON/PSD1 file).
366+
2. Determines the module name, defaulting to the repository name.
367+
3. Constructs test suites for PSModule framework tests, and module tests, filtering by operating system (Linux, macOS, Windows),
368+
depending on settings.
369+
4. Outputs the processed settings as JSON for consumption by subsequent jobs, enabling dynamic workflow behavior.
363370

364-
Compiles each module by invoking [`PSModule/Build-PSModule`](https://github.com/PSModule/Build-PSModule). Supports
365-
script modules and manifest modules. Targets PowerShell 7.4+.
371+
This phase provides the foundation for conditional job execution, ensuring that builds, tests, and publishing align with repository-specific
372+
requirements and event contexts.
366373

367-
**Pipeline steps:**
374+
### Repository Linter
368375

369-
1. Discovers module name (fallback: repository name) and stages `outputs/module/<ModuleName>`.
370-
2. Executes repository `*build.ps1` scripts alphabetically for preprocessing.
371-
3. Copies `src/` into staging, skipping any existing root module.
372-
4. Rebuilds module manifest from staged content plus repository metadata.
373-
5. Composes root module `.psm1` from staged scripts, classes, variables, and support files.
374-
6. Uploads `module` artifact and exposes `ModuleOutputFolderPath` for downstream jobs.
376+
Runs [super-linter](https://github.com/super-linter/super-linter) to enforce code quality and style guidelines.
377+
- Honors `.github/linters/` configurations for Markdown, PowerShell, and text linting.
378+
- Configurable settings via the `Linter.env` key in the `.github/PSModule.yml` file.
375379

376-
**Root module composition:**
380+
### Build Module
377381

378-
1. Adds `header.ps1` (when present) to the top of `<ModuleName>.psm1`.
379-
2. Injects a data loader so resources in `data/` become `$script:`-scoped variables.
380-
3. Appends content from `init`, `classes/private`, `classes/public`, `functions/private`, `functions/public`,
381-
`variables/private`, `variables/public`, and root-level `*.ps1` files in alphabetical order.
382-
4. Registers public classes and enums using type accelerators.
383-
5. Emits trailing `Export-ModuleMember` statement exporting only members from `public` folders.
382+
Compiles each module by invoking [`PSModule/Build-PSModule`](https://github.com/PSModule/Build-PSModule).
383+
Supports script modules and manifest modules. Targets PowerShell 7.4+.
384+
385+
**Pipeline steps:**
386+
387+
1. Executes `*build.ps1` scripts alphabetically for preprocessing in `src/`.
388+
2. Copies `src/` into staging, skipping any existing root module.
389+
3. Builds the module manifest from data in `src/`.
390+
1. Uses the partial `src/manifest.psd1` if provided; otherwise creates new manifest.
391+
2. Sets baseline metadata: `RootModule`, `ModuleVersion`, `Author`, `CompanyName`, `Description`.
392+
3. Populates `FileList`, `ModuleList`, `RequiredAssemblies`, `NestedModules`, `ScriptsToProcess`, `TypesToProcess`,
393+
`FormatsToProcess`, `DscResourcesToExport`, and export lists.
394+
4. Gathers `#requires` statements to update `RequiredModules`, `PowerShellVersion`, `CompatiblePSEditions`.
395+
5. Derives `Tags`, `LicenseUri`, `ProjectUri`, `IconUri` from repository data.
396+
6. Preserves optional fields (`HelpInfoURI`, `ExternalModuleDependencies`, custom `PrivateData`).
397+
4. Composes root module `.psm1` from scripts, classes, variables, and support files.
398+
1. Adds `header.ps1` (when present) to the top of `<ModuleName>.psm1`.
399+
2. Injects a data loader so resources in `data/` become `$script:`-scoped variables.
400+
3. Appends content from `init`, `classes/private`, `classes/public`, `functions/private`, `functions/public`,
401+
`variables/private`, `variables/public`, and root-level `*.ps1` files in alphabetical order.
402+
4. Registers public classes and enums using type accelerators.
403+
5. Emits trailing `Export-ModuleMember` statement exporting only members from `public` folders.
404+
5. Uploads `module` artifact and exposes `ModuleOutputFolderPath` for downstream jobs.
384405

385406
**Module manifest enrichment:**
386407

387-
- Reuses `manifest.psd1` when provided; otherwise creates new manifest.
388-
- Sets baseline metadata: `RootModule`, `ModuleVersion`, `Author`, `CompanyName`, `Description`.
389-
- Populates `FileList`, `ModuleList`, `RequiredAssemblies`, `NestedModules`, `ScriptsToProcess`, `TypesToProcess`,
390-
`FormatsToProcess`, `DscResourcesToExport`, and export lists from staged file system.
391-
- Gathers `#requires` statements to update `RequiredModules`, `PowerShellVersion`, `CompatiblePSEditions`.
392-
- Derives `Tags`, `LicenseUri`, `ProjectUri`, `IconUri` from repository data when absent.
393-
- Preserves optional fields (`HelpInfoURI`, `ExternalModuleDependencies`, custom `PrivateData`).
394408

395409
**References:**
396410

397411
- [about_Module_Manifests](https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_module_manifests)
398412
- [How to write a PowerShell module manifest](https://learn.microsoft.com/powershell/scripting/developer/module/how-to-write-a-powershell-module-manifest)
399413
- [PowerShellGallery publishing guidelines](https://learn.microsoft.com/powershell/gallery/concepts/publishing-guidelines)
400414

415+
### Build Documentation
416+
417+
Generates module documentation by invoking [`PSModule/Document-PSModule`](https://github.com/PSModule/Document-PSModule).
418+
419+
- Produces Markdown-based help files from the built module using
420+
[Microsoft.PowerShell.PlatyPS](https://github.com/PowerShell/platyPS).
421+
- Integrates conceptual documentation from `src/functions/public/` subfolders.
422+
423+
### Build Site
424+
425+
Creates a documentation website using [MkDocs](https://www.mkdocs.org/) and the
426+
[Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) theme.
427+
428+
- Consumes `docs/` for custom pages and `.github/mkdocs.yml` for site configuration.
429+
- Automatically generates navigation based on `src/functions/public/` structure.
430+
401431
### Test Module
402432

403433
Validates staged module by invoking [`PSModule/Test-PSModule`](https://github.com/PSModule/Test-PSModule). Executes
@@ -453,12 +483,3 @@ through [`PSModule/Publish-PSModule`](https://github.com/PSModule/Publish-PSModu
453483
- Cleans up previous prereleases for the same branch when `Publish.Module.AutoCleanup` is `true` (default).
454484
- On merge to default branch, promotes staged module, creates GitHub release with `VersionPrefix`, removes temporary
455485
prereleases.
456-
457-
## Contributing
458-
459-
Contributions are welcome. Open an issue or pull request to discuss changes.
460-
461-
## License
462-
463-
This project is licensed under the MIT License. See [LICENSE](LICENSE) for details.
464-

0 commit comments

Comments
 (0)