Sampler.psd1
|
@{ # Script module or binary module file associated with this manifest. RootModule = 'Sampler.psm1' # Version number of this module. ModuleVersion = '0.120.0' # Supported PSEditions # CompatiblePSEditions = @('Desktop','Core') # Removed to support PS 5.0 # ID used to uniquely identify this module GUID = 'b59b8442-9cf9-4c4b-bc40-035336ace573' # Author of this module Author = 'Gael Colas' # Company or vendor of this module CompanyName = 'SynEdgy Limited' # Copyright statement for this module Copyright = '(c) Gael Colas. All rights reserved.' # Description of the functionality provided by this module Description = 'Sample Module with Pipeline scripts and its Plaster template to create a module following some of the community accepted practices.' # Minimum version of the Windows PowerShell engine required by this module PowerShellVersion = '5.0' # Modules that must be imported into the global environment prior to importing this module RequiredModules = @( 'Plaster' ) # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess NestedModules = @() # Functions to export from this module FunctionsToExport = @('Add-Sample','Convert-SamplerHashtableToString','Get-BuiltModuleVersion','Get-ClassBasedResourceName','Get-CodeCoverageThreshold','Get-MofSchemaName','Get-OperatingSystemShortName','Get-PesterOutputFileFileName','Get-Psm1SchemaName','Get-SamplerAbsolutePath','Get-SamplerBuildVersion','Get-SamplerBuiltModuleBase','Get-SamplerBuiltModuleManifest','Get-SamplerCodeCoverageOutputFile','Get-SamplerCodeCoverageOutputFileEncoding','Get-SamplerModuleInfo','Get-SamplerModuleRootPath','Get-SamplerProjectBuildInfo','Get-SamplerProjectName','Get-SamplerSourcePath','Get-SamplerWorkspaceBuiltModulePath','Get-SamplerWorkspaceLinkedModuleRoot','Invoke-SamplerGit','Merge-JaCoCoReport','New-SampleModule','New-SamplerJaCoCoDocument','New-SamplerPipeline','New-SamplerWorkspaceModuleLink','Out-SamplerXml','Set-SamplerPSModulePath','Split-ModuleVersion','Update-JaCoCoStatistic') # Cmdlets to export from this module CmdletsToExport = '' # Variables to export from this module VariablesToExport = '' # Aliases to export from this module AliasesToExport = '*' # List of all modules packaged with this module ModuleList = @() # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. PrivateData = @{ PSData = @{ # Extension for Plaster Template discoverability with `Get-PlasterTemplate -IncludeInstalledModules` Extensions = @( @{ Module = 'Plaster' minimumVersion = '1.1.3' Details = @{ TemplatePaths = @( 'Templates\Classes' 'Templates\ClassResource' 'Templates\Composite' 'Templates\Enum' 'Templates\MofResource' 'Templates\PrivateFunction' 'Templates\PublicCallPrivateFunctions' 'Templates\PublicFunction' 'Templates\Sampler' ) } } ) # Tags applied to this module. These help with module discovery in online galleries. Tags = @('Template', 'pipeline', 'plaster', 'DesiredStateConfiguration', 'DSC', 'DSCResourceKit', 'DSCResource', 'Windows', 'MacOS', 'Linux') # A URL to the license for this module. LicenseUri = 'https://github.com/gaelcolas/Sampler/blob/main/LICENSE' # A URL to the main website for this project. ProjectUri = 'https://github.com/gaelcolas/Sampler' # A URL to an icon representing this module. IconUri = 'https://raw.githubusercontent.com/gaelcolas/Sampler/main/Sampler/assets/sampler.png' # ReleaseNotes of this module ReleaseNotes = '## [0.120.0-preview0004] - 2026-07-02 ### Added - New `Link_Local_Workspace_Dependencies` build task and supporting public functions (`Get-SamplerWorkspaceLinkedModuleRoot`, `Get-SamplerWorkspaceBuiltModulePath`, `New-SamplerWorkspaceModuleLink`) for linking sibling workspace module build outputs into the local module output path when working across related repos in a multi-repo workspace. Configure via `WorkspaceModules` in `build.yaml`. - `Clean` task now preserves `output\agentic\` across builds (in addition to `RequiredModules`), providing a stable location for build and test log files that survive clean cycles. The subfolder name is configurable via the `AgentOutputSubdirectory` parameter (default `''agentic''`; set to empty string to disable the exclusion). - `package_psresource_nupkg` tasks that recursively packs dependencies, ignoring `ExternalDependencies` using `PSResourceGet` module. ### Fixed - `Create_Release_Git_Tag` and `Create_Changelog_Branch` tasks now read `MainGitBranch` from `BuildInfo.GitConfig.MainGitBranch` in `build.yaml` when not set as a task parameter or InvokeBuild property. The resolution order is: task parameter -> `build.yaml` `GitConfig.MainGitBranch` -> default `''main''`. - `Create_Release_Git_Tag` and `Create_Changelog_Branch` tasks no longer call `git config user.name` or `git config user.email` when `GitConfigUserName` or `GitConfigUserEmail` are not set (empty/null), allowing the existing global or system git identity to be used without being overwritten with an empty value. - The `Build` Plaster template (`build.yaml.template`) now scaffolds a `GitConfig:` section with `MainGitBranch` pre-populated from the Plaster parameter entered during scaffolding, and `UserName`/`UserEmail` as commented-out examples. - `New-SampleModule` now accepts `-GitHubOwner` and `-GitHubOwnerDscCommunity` parameters so the GitHub owner can be specified non-interactively when scaffolding GitHub-enabled or `dsccommunity` modules. - `New-SampleModule` now forwards empty-string parameter values (such as `ModuleDescription = ''''`) to Plaster instead of silently dropping them, eliminating unexpected interactive prompts when all parameters are splatted. - `New-SampleModule` documents the `CustomModule` `ModuleType` and the new `MainGitBranch` parameter. - `New-SampleModule` `ModuleType` `ValidateSet` now includes `CustomModule`. - `New-SampleModule` exposes a `MainGitBranch` parameter (defaults to `main`) for templates that configure a default Git branch. - GitHub Copilot guidance for the project under `.github/`: - `copilot-instructions.md` documenting build/test/quality commands, the mandatory `./build.ps1` entry point, high-level architecture, key conventions (changelog discipline, `-ErrorAction ''Ignore''` preference, cross-platform/cross-version PS5.1+PS7 support), guidance for running long builds without hanging the agent shell (always tee output to a log file), and how to extract test failures from the Pester NUnit XML and HQRM CliXml result files. - Per-area `instructions/*.instructions.md` files for public functions, private functions, Plaster templates, build tasks, and Pester tests. - `agents/sampler-maintainer.md` agent definition and the `skills/validate-changes` skill that picks the smallest useful test scope and surfaces XML-based failure diagnostics. ### Changed - `New-SampleModule` no longer splits `ModuleType` and `Features` into separate parameter sets, so both can be supplied in the same invocation. - Pester task setup now still supports repository-only test runs without a prebuilt module, but fails fast when a PowerShell module test workflow is invoked before the module output has been built. - Documented the separation between source kind and artifact context in build-task guidance, clarified module-versus-non-module version fallback rules, and expanded the README with pipeline-shape documentation for module, alternate-artifact, and standalone repository flows. - Added `Get-SamplerProjectBuildInfo` and updated Pester build tasks to use its `BuildType`/`HasBuiltOutput` project model directly instead of Pester-specific setup/import/identity wrapper functions. - Pinned `ModuleBuilder` to `3.1.8` in `RequiredModules.psd1` because newer versions break Sampler task alias registration during tests. - Temporarily skip the `SimpleModule` integration tests that depend on building the sample module on Windows PowerShell 5.1 while `ModuleBuilder` 3.2 is broken there. - Change azure-pipelines.yml to support runtime parameters for running only selected platforms. Refactored the jobs to matrix jobs so it is not hardcoded jobs ### Fixed - Update URL for PowerShell gallery pre-release badge ([#553](https://github.com/gaelcolas/Sampler/issues/553)). - Update azure-pipelines task PublishCodeCoverageResults to v2 ([#551](https://github.com/gaelcolas/Sampler/issues/551)). - Updated comment-based help for Resolve-Dependency.ps1 - Moved large parts of the ReadMe to the Wiki to handle Include simple tutorials in the Wiki ([issue #487](https://github.com/gaelcolas/Sampler/issues/487)) - Expanded the `CustomModule` section in the wiki `Getting-started` page to document the `-Features` parameter, list every supported feature value and show non-interactive examples. - `Sampler` Plaster template - Fixed `Features` choice values so `azurepipelines`, `vscode`, `github`, and `codecov` are valid multichoice values (previously the Azure Pipelines option was unusable). - Fixed prompt conditions for `UseGit`, `UseGitVersion`, `UseCodeCovIo`, `UseGitHub`, `UseAzurePipelines`, `UseVSCode`, `License`, and `LicenseType` which contained contradictory `Features.Count` checks that prevented prompts from ever firing. - Fixed `GitHubOwner` condition that used `-contains` against an integer (`Features.Count`). - Replaced `${PLASTER_PARAM_Features} -in @(...)` checks with explicit `-contains` checks so multichoice `Features` arrays are evaluated correctly. - Fixed the `azure-pipelines.yml` file condition that referenced the non-existent `Azure-Pipelines` feature value. - Aligned `New-SampleModule` `Features` `ValidateSet` casing with the template''s choice values. - Made `Add-Sample` and `New-SamplerPipeline` resolve Plaster''s culture-aware manifest-path helper at runtime so they work with both Plaster v2.x (`Get-PlasterManifestPathForCulture`) and Plaster v1.x (`GetPlasterManifestPathForCulture`). - `Set-SamplerTaskVariable` now infers module sources from the source manifest, uses an explicit Chocolatey artifact context instead of build-output probing, and falls back to version `0.0.1` for non-module repositories when no manifest or GitVersion data is available. ' Prerelease = 'preview0004' } # End of PSData hashtable } # End of PrivateData hashtable } |