diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..1c66a6b --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,264 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Added + +- `PSResourceGet` dependency type providing first-class support for + PowerShellGet v3 (`Microsoft.PowerShell.PSResourceGet`) alongside the + existing `PSGalleryModule` handler (#179). +- `InstallLocal` psake task that stages files and installs the module + to `CurrentUser` scope from `Output\`, useful for validating + pre-release bits locally without publishing (#180). +- `Chocolatey` dependency type with handler script and Pester + coverage, enabling Chocolatey packages alongside PowerShell modules + in `requirements.psd1`. +- `Nuget` dependency type for arbitrary NuGet feeds (not just the + PowerShell Gallery), including custom DLL name support and the + ability to extract `.exe` payloads. +- Credential support across `PSGalleryModule`, `PSGalleryNuget`, and + `Invoke-PSDepend`, including credentialed NuGet feed search and a + warning when credential configuration looks wrong. +- Core, macOS, and Linux platform tags on `Nuget` in + `PSDependMap.psd1`, enabling cross-platform use. +- SemVer / prerelease handling for module versions, with a PowerShell + version guard so PSDepend's `SemanticVersion` does not collide with + the native `System.Management.Automation.SemanticVersion` class in + PS 6+; falls back to `System.Version` when a version string is not + SemVer-compatible. +- `AcceptLicense` parameter on `PSRepositoryModule` and matching + `AcceptLicense` + `AllowPrerelease` plumbing on `PSGalleryModule`, + splatted only when explicitly specified to preserve compatibility + with older PowerShellGet versions. +- Stale workflow (`.github/workflows/stale.yml`) for issues and PRs, + with a `workflow_dispatch` trigger for on-demand sweeps. +- `CONTEXT.md` documenting the PSDepend domain lexicon (Dependency, + DependencyType, Target, Scope, `PSDependAction`, etc.) for both + human and AI contributors. + +### Changed + +- Migrated the entire Pester test suite from v4 to v5 (#164), + including new Pester v5 unit tests for individual dependency-type + handler scripts and a reviewer checklist documenting the migration + conventions (#166). +- Build system rewritten on top of `PowerShellBuild` with GitHub + Actions replacing the prior AppVeyor pipeline (#163); CI workflow + actions were updated to current major versions across the board + (#168). +- Test bootstrap now runs through `build.ps1` (`Bootstrap` / `StageFiles` + / `Test`) rather than ad-hoc setup, so tests always import from + `Output\` and not the source tree (#171). See `CLAUDE.md` for the + contract. +- `FunctionsToExport` in `PSDepend.psd1` is now an explicit list of + the eight public commands instead of `*`, matching PowerShell module + guidance and improving discoverability. +- NuGet command-line bootstrap is now lazy: it runs only when a + `Nuget` or `PSGalleryNuget` dependency is actually used, instead of + on every module import (#175). +- Default branch references updated from `master` to `main` across + `README`, examples, the manifest's `LicenseUri` / `ProjectUri` / + `ReleaseNotes` links, and build/CI scripts. +- README and example dependency files updated to reflect the + `PowerShellOrg` ownership of the project. +- `Github` dependency type now allows overriding the imported name + via the standard `Name` key, instead of always deriving it from the + `owner/repo` slug (#121). +- `Github` version matching now accepts a `vX.Y.Z` tag when the + dependency requests `X.Y.Z`, so dependencies written without the + `v` prefix resolve against the common GitHub release-tag convention + (#123). +- `PSGalleryModule` may now be invoked without an explicit + `Repository`, in which case PSDepend defers to whatever repositories + are currently registered via `Get-PSRepository` rather than forcing + the PowerShell Gallery. + +### Fixed + +- `Get-Dependency` operator-precedence bug when `DependencyType` is + set inside `PSDependOptions`: parenthesization was incorrect, so the + global default failed to apply to dependencies without an explicit + type (#131, #173). +- `Find-PSDependLocally` now consults *all* installed versions of a + module before querying the remote when an explicit version is + requested, rather than short-circuiting on the first non-matching + local copy and re-downloading unnecessarily (#176). +- `Import-PSDependModule` now sanitizes the version string before + passing it to `Import-Module`, preventing failures when prerelease + segments or `vX.Y.Z` tags appear in the resolved version (#140). +- `Chocolatey` install path now passes `--yes` to `choco install` + (previously the script contained the typo `--yess`), so installs + no longer hang waiting on confirmation, and the surrounding code + was tidied for readability (#174). +- `Git` handler now uses the full `Dependency.Target` path when the + target directory doesn't yet exist, fixing a regression where + relative targets would resolve against the wrong working directory + (#169). +- `Git` handler no longer depends on the `.exe` extension when + invoking `git`, so it works on macOS / Linux installations where the + binary is just `git`. +- `Github` downloads suppress `Invoke-RestMethod`'s progress stream, + yielding a measurable speed-up on large release-asset downloads + (#122). +- `PowerShellGet` package handler now forwards `-Scope` correctly + when `Target=CurrentUser`, instead of silently installing to the + default scope (#167). +- Version comparison logic for `'latest'` upgrades in + `PSGalleryModule` and `Package` scripts now compares + `[System.Version]` values rather than strings, so `10.0.0` no longer + sorts below `9.0.0` (#170). +- Empty-string guard added alongside existing `$null` checks in + dependency-name handling, preventing silent skips when a malformed + `requirements.psd1` produces a zero-length name (#102). +- `Test-Dependency` and friends now emit a clearer error message + when `*.depend.psd1` is missing, instead of the previous opaque + parse failure (#126). +- `DotnetSdk` install test now mocks `Install-Dotnet` so the test + suite no longer attempts a real SDK install on CI runners (#178). + +### Docs + +- Added a note that `Save-Module` may need to be rerun if a + dependency's `Target` directory was removed between invocations + (#177). +- Credential help and a credential-misconfiguration warning added to + the relevant handler scripts and `Invoke-PSDepend` help. + +## [0.3.0] - 2018-09-20 + +### Added +- `DotnetSdk` dependency type. + +### Changed +- TLS 1.2 is now **added** to existing security protocols rather than replacing them (#85). +- Parameterized help for `Get-PSDependType`. +- GitHub download performance improvements (#84). + +### Fixed +- `AllowClobber` placement in the `PSGalleryModule` splat (#83). +- GitHub import path bug. + +## [0.2.1] - 2018-05-11 + +### Added +- PowerShell Core support (#79). +- `AllowClobber` parameter on `PSGalleryModule` (#53). +- Resolving of `PSDrives`. +- Error-handling parameters on dependency scripts. + +### Changed +- Local build-environment improvements (#78). +- Tests now use `TestDrive` instead of `TargetPath`. +- `psake` build task allows `psd1` version overrides. +- Unmarked `Github` as experimental. +- Honor arbitrary target path logic for `Github` types. +- Removed `mkdir` from the module. + +### Fixed +- Path delimiter on Linux. +- Conditional logic for removing parameters from splats. + +## [0.2.0] - 2018-03-22 + +### Added +- Linux support (#72). +- Supported-platforms handling in `PSDependMap` (`windows`, `core`, `macos`, `linux`). +- Support for `.*requirements.psd1` filenames and hidden dependency files. +- `ImportName` to override the imported module name. +- TLS 1.2 added to the security protocol list. + +### Changed +- Use capitalized `Noop` to avoid case-sensitivity issues on Linux. +- Improved verbosity, descriptions, and variable naming across scripts. +- Core-friendly `TargetPath` handling. + +### Fixed +- Bug that missed hidden `*.depend.psd1` files. +- Alias resolution. + +## [0.1.63] - 2018-01-17 + +### Added +- GitHub dependency type rewrite: versioned folders, version targets, multiple-version support, "latest" GitHub version lookup, scope keyword support, examples. +- `SkipPublisherCheck` for PSGallery modules (#46, #64). + +### Changed +- `AddToPath` now applies on both install **and** subsequent imports (#60). +- Performance: removed redundant `Get-PSRepository` calls (#52); reduced calls to find the latest version of a module/package (#58). + +### Fixed +- Ensure the correct version of a module is imported (#57). +- Doubled-folder bug, version bug, and import bug in the GitHub rewrite. +- Resolve `Target` correctly (#56). + +## [0.1.56] - 2017-10-04 + +### Added +- `Npm` dependency type with unit tests. +- `PreScripts` and `PostScripts` with injected variables. +- Module extraction in the `Git` dependency script. +- Initial simple-syntax with namespaces (#41). + +### Changed +- Full-path resolution for `AddToPath`, including when relative. + +### Fixed +- Documentation typos. +- `PreScripts` and `PostScripts` feature bugs. + +## [0.1.49] - 2017-03-19 + +### Added +- `Github` dependency type with default target handling. +- `Command` dependency type. +- `Package` dependency type with examples and tests. +- `FileSystem` dependency type. +- Hashtable input support for `Get-Dependency` and `Invoke-PSDepend`. +- `PSDependOptions` for global defaults (including global `DependencyType`, #15). +- `Invoke-DependencyScript` and tests. +- `$DependencyFolder`, `$PWD`, and `.` substitutions in `psd1` files. +- Sanitized environment-variable substitution in dependency definitions. +- Per-dependency `Target` override. +- `-Quiet` switch on `Invoke-PSDepend`. +- Extending-PSDepend documentation. + +### Changed +- Adjusted `-Force` behavior on Module dependency types (#15). +- Hardcoded `Repository` removed from `PSGalleryModule.ps1`. +- Changed NuGet download path in the curl/bash install. + +### Fixed +- Dependency parsing / `DependencyType` issue. +- Missing dependency type detection. +- Comment-based help for `Invoke-PSDepend`. +- Link to `Install-PSDepend`. +- `AddToPath` behavior and example scenarios. +- Module target doesn't exist + `-Force`. + +## [0.0.30] - 2016-08-28 + +### Added +- `Test-Dependency`, `Import-Dependency`, and `Install-Dependency` actions. +- `Git` dependency type with branch/commit support. +- `PSGalleryNuget` dependency type. +- `PSGalleryModule` with `Force`, import-on-install option, and NuGet package-provider bootstrap. +- `FileDownload` dependency type. +- Support for `requirements.psd1` filename. +- AppVeyor CI hookup and initial test suite. +- `about_PSDepend` help and notes about PSDeploy. + +### Fixed +- Bug in `Git` account/repo regex. +- Bug in `PSGalleryNuget`. +- Default Git dependency type discovery. +- `Invoke-PSDepend` `-Force` switch bug. + +## [0.0.1] - 2016-07-29 + +### Added +- Initial scaffolding, adapted from PSDeploy.