yaml-include 0.7.0

A lib and a CLI for recursively parsing "!include" data in yaml files
Documentation

Yaml-include

A cli tool for processing yaml with include documents through !include <path> tag.

it kinda works with json as well see data/simple/other.json

Install

cargo install yaml-include

Features

  • include and parse recursively yaml (and json) files
  • include markdown and txt text files
  • include other types as base64 encoded binary data.
  • by default handle gracefully circular references with !circular tag

Usage

Help

yaml-include --help
A simple cli that output to stdout recursively included data from a yaml file path

Usage: yaml-include [OPTIONS] <FILE_PATH>

Arguments:
  <FILE_PATH>  main yaml file path to process

Options:
  -o, --output-path <OUTPUT_PATH>  optional output path (output to stdout if not set)
  -p, --panic-on-circular          panic on circular reference (default: gracefully handle circular references with !circular tag)
  -h, --help                       Print help
  -V, --version                    Print version

Run

Ex.:

yaml-include data/sample/main.yml > main_inlined.yml

Basically, turns this:

main.yml:

data:
    - !include file_a.yml
    - !include file_b.yml

file_a.yml:

something:
    - this
    - that

file_b.yml:

other:
    - text: !include file_c.txt
    - markdown: !include file_d.md

file_c.txt:

This is some "long" multiline
text file i don't want to edit
inline in a long yaml file

file_d.md:

# This is some markdown data

## I don't want to edit

- inline
- in a long yaml file

Into that:

data:
  - something:
      - this
      - that
  - other:
      - text: |-
          This is some long multiline
          text i don't want to edit
          inline in a long yaml file
      - markdown: |
          # This is some markdown data

          ## I don't want to edit

          - inline
          - in a long yaml file

see data/sample