All Projects → yaml → yaml-runtimes

yaml / yaml-runtimes

Licence: MIT license
YAML processor runtimes via docker

Programming Languages

perl
6916 projects
java
68154 projects - #9 most used programming language
shell
77523 projects
python
139335 projects - #7 most used programming language
Dockerfile
14818 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to yaml-runtimes

Frontyaml
YAML Front matter parser
Stars: ✭ 248 (+785.71%)
Mutual labels:  yaml
chorus
📝 The first editor for Spigot configurations.
Stars: ✭ 133 (+375%)
Mutual labels:  yaml
reinforz
An online quiz app made using react, typescript and material-ui
Stars: ✭ 58 (+107.14%)
Mutual labels:  yaml
cfn-include
Preprocessor for CloudFormation templates with support for loops and flexible include statements
Stars: ✭ 83 (+196.43%)
Mutual labels:  yaml
scikit-ci
Simpler and centralized CI configuration for Python extensions.
Stars: ✭ 15 (-46.43%)
Mutual labels:  yaml
yaml.sh
Read YAML files with only Bash
Stars: ✭ 30 (+7.14%)
Mutual labels:  yaml
Cloud Code Samples
Code templates to make working with Kubernetes feel like editing and debugging local code.
Stars: ✭ 245 (+775%)
Mutual labels:  yaml
yamlpath
Command-line get/set/merge/validate/scan/convert/diff processors for YAML/JSON/Compatible data using powerful, intuitive, command-line friendly syntax.
Stars: ✭ 78 (+178.57%)
Mutual labels:  yaml
yaml-vim
YAML syntax/indent plugin for Vim
Stars: ✭ 37 (+32.14%)
Mutual labels:  yaml
Doramon
个人工具汇总:一致性哈希工具,Bitmap工具,布隆过滤器参数生成器,Yaml和properties互转工具,一键式生成整个前后端工具,单机高性能幂等工具,zookeeper客户端工具,分布式全局id生成器,时间转换工具,Http封装工具
Stars: ✭ 53 (+89.29%)
Mutual labels:  yaml
yaml-update-action
Update YAML property with dynamic values
Stars: ✭ 81 (+189.29%)
Mutual labels:  yaml
apipkgen
Generate an R package from API specs
Stars: ✭ 12 (-57.14%)
Mutual labels:  yaml
wildq
Command-line TOML/JSON/INI/YAML/XML/HCL processor using jq c bindings
Stars: ✭ 22 (-21.43%)
Mutual labels:  yaml
Cli
A simple, fast, and fun package for building command line apps in Go
Stars: ✭ 16,995 (+60596.43%)
Mutual labels:  yaml
yaml-overlay-tool
Use JSONPath to query & patch YAML files with ease.
Stars: ✭ 24 (-14.29%)
Mutual labels:  yaml
Vscode Data Preview
Data Preview 🈸 extension for importing 📤 viewing 🔎 slicing 🔪 dicing 🎲 charting 📊 & exporting 📥 large JSON array/config, YAML, Apache Arrow, Avro, Parquet & Excel data files
Stars: ✭ 245 (+775%)
Mutual labels:  yaml
CV
📜 My Data Driven CV written with R, YAML, & LaTeX
Stars: ✭ 54 (+92.86%)
Mutual labels:  yaml
powerflows-dmn
Power Flows DMN - Powerful decisions and rules engine
Stars: ✭ 46 (+64.29%)
Mutual labels:  yaml
webparsy
Node.JS library and cli for scraping websites using Puppeteer (or not) and YAML definitions
Stars: ✭ 40 (+42.86%)
Mutual labels:  yaml
libcyaml
C library for reading and writing YAML.
Stars: ✭ 165 (+489.29%)
Mutual labels:  yaml

Docker images for YAML Runtimes

Open in Gitpod

This project provides several Dockerfiles for runtime environments for a list of YAML processors.

The goal of this project is to be able to play with most available YAML libraries out there and compare them.

Libraries can be tested for bugs, and it makes it easier to try out bugfixes for a language for which you don't have any development libraries installed.

It was part of the YAML Editor and then outsourced in its own project.

The YAML editor allows to receive the output of a list of YAML processors in vim, with a very helpful automatic tiled layout and nice shortcuts.

It currently can work with only one docker container at a time, that's one reason why we build the alpine-runtime-all image.

Each library has one or more programs to process YAML input and output parsing events or JSON. In the docker images they can be found under the /yaml/bin directory.

Quickstart

source /path/to/yaml-runtimes/.rc

To play with PyYAML:

yamlrun-docker-pull python
docker run -i --rm yamlio/alpine-runtime-python py-pyyaml-event <t/data/input.yaml
docker run -i --rm yamlio/alpine-runtime-python py-pyyaml-json <t/data/input.yaml
docker run -i --rm yamlio/alpine-runtime-python py-pyyaml-yaml <t/data/input.yaml
docker run -i --rm yamlio/alpine-runtime-python py-pyyaml-py <t/data/input.yaml

To play with libyaml:

yamlrun-docker-pull static
docker run -i --rm yamlio/alpine-runtime-static c-libyaml-event <t/data/input.yaml
docker run -i --rm yamlio/alpine-runtime-static c-libyaml-yaml <t/data/input.yaml

Dependencies

For some operations, you need to install the following dependencies:

  • perl
  • YAML::PP perl module
  • jq

To install YAML::PP, first install the cpanm client (debian example):

apt-get install cpanminus

Then install the module with cpanm:

# Install YAML::PP into the local/ directory
cpanm -l local --notest YAML::PP

The scripts will automatically use the local/ directory to search for modules. You could also do this manually by setting PERL5LIB:

export PERL5LIB=$PWD/local/lib/perl5

Usage

To list all libraries:

make list

Pull images

# pull alpine-runtime-static
make docker-pull-perl
# pull alpine-runtime-node
make docker-pull-node
# pull alpine-runtime-all
make docker-pull-all

Play

To play around with the several processors, call them like this:

docker run -i --rm yamlio/alpine-runtime-static c-libfyaml-event <t/data/input.yaml

To get a list of all available views:

make list-views-static
make list-views-all

Daemon

By default, for every test a docker run will be executed. To make testing a bit faster, you can run the containers in background:

# Start all containers
yamlrun-docker-start
# Only start alpine-runtime-perl container
yamlrun-docker-start perl

# Test
make testv

# Stop all containers
yamlrun-docker-stop
# Only stop alpine-runtime-perl container
yamlrun-docker-stop perl

# List containers
yamlrun-docker-status
# Restart all
yamlrun-docker-restart

Then you can run this instead:

docker exec -i alpine-runtime-static c-libfyaml-event <t/data/input.yaml

Also the tests (see below) will run docker exec instead automatically.

Build

To build all images, do

make build

Note that this can take a while.

You can also just build a single environment or library:

# build all javascript libraries
make node
# build C libyaml
make c-libyaml
# build perl YAML::PP
make perl-pp

To list all images, do

make list-images

Test

To see if the build was successful and all programs work, run

make test
# or verbose:
make testv

This will test each program with a simple YAML file.

To test only one runtime or library:

make test LIBRARY=c-libyaml
make testv RUNTIME=perl
make testv RUNTIME=all LIBRARY=hs-hsyaml
# Test all libraries in alpine-runtime-all image
make testv RUNTIME=all

Example

If you want to test a certain library, for example c-libfyaml, the steps would be:

make c-libfyaml
make list-images
make testv LIBRARY=c-libfyaml
docker run -i --rm yamlio/alpine-runtime-static c-libfyaml-event <t/data/input.yaml
docker run -i --rm yamlio/alpine-runtime-static c-libfyaml-json <t/data/input.yaml

Architecture

So far all docker images are based on Alpine Linux.

For each environment there is a builder image and a runtime image. The libraries are built in the builder containers, and all necessary files are then copied into the runtime images.

List of Libraries

Currently only official releases of the libraries are build. Allowing to build from sources like git might be added at some point.

The list of libraries and their configuration can be found in list.yaml.

Type make list to see the following list:

ID Language Name Version Runtime
c-libfyaml C libfyaml 0.7.12 static
c-libyaml C libyaml 0.2.5 static
cpp-rapidyaml C++ rapidyaml 0.4.0 static
cpp-yamlcpp C++ yaml-cpp 0.7.0 static
dotnet-yamldotnet C# YamlDotNet 11.2.1 dotnet
go-yaml Go go-yaml v2 static
hs-hsyaml Haskell HsYAML 0.2.1.0 haskell
hs-reference Haskell YAMLReference master haskell
java-snakeengine Java SnakeYAML Engine 2.4-SNAPSHOT java
java-snakeyaml Java SnakeYAML 1.31-SNAPSHOT java
js-jsyaml Javascript js-yaml 4.1.0 node
js-yaml Javascript yaml 2.0.0-10 node
lua-lyaml Lua lyaml 6.2.7 lua
nim-nimyaml Nim NimYAML 0.16.0 static
perl-pp Perl YAML::PP 0.031 perl
perl-pplibyaml Perl YAML::PP::LibYAML 0.005 perl
perl-refparser Perl Generated RefParser 0.0.5 perl
perl-syck Perl YAML::Syck 1.34 perl
perl-tiny Perl YAML::Tiny 1.73 perl
perl-xs Perl YAML::XS (libyaml) 0.83 perl
perl-yaml Perl YAML.pm 1.30 perl
py-pyyaml Python PyYAML 6.0 python
py-ruamel Python ruamel.yaml 0.17.20 python
raku-yamlish Raku YAMLish 0.0.6 rakudo
ruby-psych Ruby psych 4.0.3 ruby
rust-yamlrust Rust yaml 0.4.4 static

Contributing

See the Contributing Guidelines

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].