3 releases (breaking)

new 0.3.1 Dec 1, 2024
0.2.0 Sep 21, 2024
0.1.0 Jun 27, 2024

#458 in Database interfaces

Download history 10/week @ 2024-09-13 207/week @ 2024-09-20 27/week @ 2024-09-27 7/week @ 2024-10-04 152/week @ 2024-11-29

152 downloads per month

MIT license

110KB
3K SLoC

Rust 2K SLoC // 0.2% comments Gherkin (Cucumber) 1K SLoC // 0.0% comments

ys - yaml-schema

CI Tests

yaml-schema is a tool to validate YAML files against a YAML schema.

The YAML Schema specification is based on JSON Schema (https://json-schema.org/), but expressed as YAML.

yaml-schema is both a Rust library and an executable.

Example Usage

Given a schema.yaml file containing:

type: object
properties:
  foo:
    type: string
  bar:
    type: number

And a valid.yaml file containing:

foo: "I'm a string"
bar: 42

Then when you issue the command

ys -f schema.yaml valid.yaml

Then the command should succeed with exit code 0

On the other hand, when given an invalid.yaml file containing:

foo: 42
bar: "I'm a string"

Then the command

ys -f schema.yaml invalid.yaml

Should fail with exit code 1

Features

yaml-schema uses Cucumber to specify and test features:

See the features folder for all examples.

Installation

Currently, yaml-schema requires Git, Rust and Cargo to build and install: https://doc.rust-lang.org/cargo/

To install the ys binary, simply issue the command:

cargo install yaml-schema

That should build and install the executable at $HOME/.cargo/bin/ys (which should be in your PATH)

Usage

Running ys without any options or arguments should display the help:

A tool for validating YAML against a schema

Usage: ys [OPTIONS] [FILE] [COMMAND]

Commands:
  version  Display the ys version
  help     Print this message or the help of the given subcommand(s)

Arguments:
  [FILE]  The YAML file to validate

Options:
  -f, --schema <SCHEMAS>  The schema to validate against
      --fail-fast         Specify this flag to exit (1) as soon as any error is encountered
  -h, --help              Print help
  -V, --version           Print version

Dependencies

~7–9.5MB
~170K SLoC