PowerShell-Yayaml icon indicating copy to clipboard operation
PowerShell-Yayaml copied to clipboard

A YAML parser and writer that uses an Assembly Load Context on PowerShell 7+

PowerShell-Yayaml

Test workflow codecov PowerShell Gallery License

Yet Another YAML PowerShell parser and writer. While there are a few other YAML modules out on the gallery this module includes the following features:

  • YAML 1.2 parser and emitter
  • YAML 1.2 JSON parser and emitter
  • Support for custom schemas
  • Finer control over scalar, map, and sequence styles
  • Loads YamlDotNet in an Assembly Load Context to avoid DLL hell and cross assembly conflicts (PowerShell 7+ only)

There are schemas that support YAML 1.2 (default), 1.2 JSON, 1.1, and failsafe values.

See Yayaml index for more details.

Requirements

These cmdlets have the following requirements

  • PowerShell v5.1 or newer

Examples

Creating a YAML string is as simple as providing an object to serialize:

$obj = [PSCustomObject]@{
    Key = 'value'
    Testing = 1, 2, 3
}

$obj | ConvertTo-Yaml

Produces

Key: value
Testing:
- 1
- 2
- 3

Parsing a YAML string to an object:

$obj = $yaml | ConvertFrom-Yaml
$obj.Key
$obj.Testing

The behaviour of these two cmdlets try to follow the ConvertTo-Json and ConvertFrom-Json cmdlets.

Installing

The easiest way to install this module is through PowerShellGet.

You can install this module by running;

# Install for only the current user
Install-Module -Name Yayaml -Scope CurrentUser

# Install for all users
Install-Module -Name Yayaml -Scope AllUsers

Contributing

Contributing is quite easy, fork this repo and submit a pull request with the changes. To build this module run .\build.ps1 -Task Build in PowerShell. To test a build run .\build.ps1 -Task Test in PowerShell. This script will ensure all dependencies are installed before running the test suite.