Skip to content

Latest commit

 

History

History
205 lines (159 loc) · 7.92 KB

File metadata and controls

205 lines (159 loc) · 7.92 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

Added

  • Add configurable default_json_depth setting in Datum.yml to control ConvertTo-Json serialization depth (default: 4) (#136).
  • Add integration tests for deep structure merge and truncation warning detection (#136).
  • Added complete documentation system under docs/ with index and seven reference guides:
    • AboutDatum.md — module overview, core concepts, and examples.
    • CmdletReference.md — full parameter reference for all public functions.
    • DatumYml.mdDatum.yml configuration reference (stores, resolution precedence, merge defaults, handlers).
    • Merging.md — merge strategies, data types, knockout prefix, and per-key configuration.
    • DatumHandlers.md — handler system, ProtectedData, InvokeCommand, and custom handler authoring.
    • RSOP.md — RSOP computation, filtering, source tracking, caching, and troubleshooting.
    • CodeLayers.md — conceptual guide to layering DSC code with Roles and Configurations backed by Datum data.
  • Documented $env:DatumRsopIndentation environment variable in RSOP.md.
  • Added AllNodes iteration examples for both flat and nested directory layouts in README.md, RSOP.md, and AboutDatum.md.
  • Support conditional ResolutionPrecedence entries using Datum.InvokeCommand expressions ([x= ... =]). Entries that evaluate to $null or empty strings are now silently skipped instead of causing lookup errors.
  • Added knockout support for hashtable array items.
  • Added integration tests for environment variable resolution in ResolutionPrecedence paths (#126).

Changed

  • Rewrote README.md with structured sections, table of contents, installation guide, merge strategy reference, handler documentation, and public function catalogue.
  • Remove SkipReason from RSOP test cases due to resolved merge logic bug.
  • Adjusted integration tests for knockout of hashtable array items.
  • Adjusted integration tests for hashtable array merge behauvior 'Sum'.
  • Add integration test for conditional ResolutionPrecedence entry using an InvokeCommand expression that returns a path for some nodes and nothing for others.

Fixed

  • Fixed Join-Path throwing DriveNotFoundException when ResolutionPrecedence entries contain environment variable references such as $($env:VarName), by using [System.IO.Path]::Combine instead (#126).
  • Fix ConvertTo-Json truncation warnings for deep data structures in Merge-Datum, Merge-Hashtable, and Invoke-TestHandlerAction (#136).
  • Fixed AllNodes iteration code samples that failed with nested directory layouts (e.g. AllNodes/Dev/DSCFile01.yml).
  • Fixed -IncludeSource output examples to show actual right-aligned annotations instead of fake __source YAML keys.
  • Fixed troubleshooting section referencing nonexistent $rsop.SomeKey.__source pattern.
  • Documented -IncludeSource/-RemoveSource mutual exclusivity in RSOP.md and CmdletReference.md.
  • Fixed merging of hashtable array items using merge behaviour 'Sum'.

[0.41.0] - 2026-02-03

Added

  • Added Pester tests for credential handling.
  • Added knockout support for basetype arrays.
  • Added cleanup of knockout items.

Changed

  • Use powershell-yaml module for JSON file handling — JSON files are now parsed via ConvertFrom-Yaml (JSON is valid YAML 1.2), producing OrderedDictionary objects that receive full recursive ConvertTo-Datum processing including datum handler invocation (#154).
  • Improved error messages when parsing invalid JSON files — errors now reference the JSON file path instead of showing a confusing YAML parser error (#154).
  • Adjusted integration tests for knockout of basetype array items and hashtables keys.
  • Adjusted Merge-DatumArray to convert tuple key values to datum before merging
  • Added more tests to cover hash table merging with datum handlers (#155).
  • Updated build scripts to Sampler 0.119.0-preview0005.
  • Migrated all integration tests to Pester 5 syntax.

Fixed

  • Fixed ConvertTo-Datum always returns $null when DatumHandler returns $false (#139).
  • Fixed Merge-DatumArray does not return an array when merged array contains a single hashtable.
  • Fixed hashtable array items are not merged when using datum handler for tuple keys (#155).
  • Fixed and extended tests for Copy-Object.
  • Fixed PowerShell 7 compatibility of Copy-Object integration test.

[0.40.1] - 2023-04-03

Added

  • Added support for specifying the encoding (#87).
  • Added error handling to 'Get-FileProviderData.ps1'.
  • Added functions for get and clear the Datum RSOP cache.

Fixed

  • Fixed how issue not allowing Datum handlers to be used on arrays (#89).
  • Fixed issue in Merge-Hashtable where it did not merge hashtables correctly when these are included in an array.
  • Formatting in all files with VSCode formatting according to the 'settings.json' file taken from Sampler
  • Added yaml format config settings 'singleQuote' and 'bracketSpacing' and reformatted all yaml files according to the new settings.
  • Cleanup
    • Get-DatumType.ps1
    • Merge-DatumArray.ps1
    • Merge-Hashtable.ps1
    • Compare-Hashtable.ps1
    • Node.ps1
    • FileProvider.ps1
    • ConvertTo-Datum.ps1
    • Get-MergeStrategyFromPath.ps1
    • Get-MergeStrategyFromString.ps1
    • Get-DatumRsop.ps1
    • Merge-Datum.ps1
    • datum.psd1
    • Get-FileProviderData.ps1
    • Invoke-TestHandlerAction.ps1
    • New-DatumStructure.ps1
    • Resolve-Datum.ps1
    • Resolve-DatumPath.ps1
    • Test-InvokeCommandFilter
    • Resolve-NodeProperty.ps1
    • New-DatumFileProvider.ps1
  • Added 'GitHubConfig' to build.yml and updating main branch to main.

[0.0.39] - 2020-09-29

Added

  • Corrected a typo and incorrect debug information.
  • New CI process.
  • Added support for specifying the encoding (#87).
  • Added more tests and test data.

Changed

  • Updated new build.ps1 from sampler.

Fixed

[0.0.38] - 2019-03-31

Fixed

  • Datum on linux (change case on Datum.psd1 and Datum.psm1)

[0.0.37] - 2019-03-31

Fixed

  • Datum in PSCore 6 on Windows (Write-Output -NoEnumerate bug)

[0.0.36] - 2019-01-22

Removed

  • [breaking] Get-DscSplattedResource script to process is removed and now available in the DscBuildHelpers module (Datum is not DSC specific, now it's fully decoupled)

Fixed

  • fixed issue with merging arrays of hashtables

[0.0.35] - 2018-11-19

Removed

  • ProtectedData / Data Encryption datum handler is no longer built-in (need external module Datum.ProtectedData available in the gallery)

Added

  • PowerShell 6 (aka Core) support. By dropping the ProtectedData dependency, Datum now works on PSCore.

Fixed

  • Allowing to set the CompositionKey of the Get-DatumRSOP command