yamine
A simple CLI for combining json and yaml files
Install
Available via Homebrew/Linuxbrew
brew install avencera/yamine/yamine
or
Install from a github release:
curl -LSfs https://avencera.github.io/yamine/install.sh | sh -s -- --git avencera/yamine
or
Download a release directly from github: github.com/avencera/yamine/releases
Usage
yamine --help
Combine JSON/YAML files into a single file
USAGE:
yamine [FLAGS] [OPTIONS]
...
FLAGS:
--dry-run Default mode
-h, --help Prints help information
-s, --std-out Outputs combined file contents to STDOUT
-V, --version Prints version information
-w, --write Write new output file
OPTIONS:
-d, --depth
Number of folder depth to recurse into [default: 1]
-f, --format
The format for the output file, defaults to yaml, options are: 'yaml', 'json', 'k8s-json'
[default: yaml]
-o, --output
Examples
- Combine all yaml and json files in the current folder and creates
combined.yaml
fileyamine -w .
- Combine all yaml and json files in the current folder and creates a
combined.json
file injson-k8s
format:yamine --write --format json-k8s --output combined.json .
- Output the combined file to STDOUT in json-array format:
yamine --std-out -f json-array .
Formats
-
yaml
- a multi document yaml file separated by---
(a kubernetes multi resource document)--- apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute --- apiVersion: v1 kind: Namespace metadata: name: example --- kind: ServiceAccount apiVersion: v1 --- apiVersion: v1 kind: Service --- apiVersion: apps/v1 kind: Deployment
-
json-array
- a json file with each combined file being an element in the array[ { "apiVersion": "traefik.containo.us/v1alpha1", "kind": "IngressRoute" ... }, { "apiVersion": "v1", "kind": "Namespace", ... }, { "apiVersion": "v1", "kind": "ServiceAccount", ... }, { "apiVersion": "v1", "kind": "Service", ... }, ]
-
json-k8s
- a kubernetes multi resource json document ex:{ "kind": "List", "apiVersion": "v1", "items": [ { "apiVersion": "traefik.containo.us/v1alpha1", "kind": "IngressRoute" ... }, { "apiVersion": "v1", "kind": "Namespace", ... }, { "apiVersion": "v1", "kind": "ServiceAccount", ... }, { "apiVersion": "v1", "kind": "Service", ... }, ] }