yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor
Go to file
Mike Farah 8a61ef072a Revert "Snapcraft classic confinment to allow access to system resources"
Snap doesn't let me use classic

This reverts commit 4f178d2317.
2019-03-25 09:28:06 +11:00
debian Fix Debian 'Architecture' 2019-03-21 12:39:47 +11:00
docs Update documentation 2018-11-20 08:53:25 +11:00
examples Add test for --allow-empty flag in merge command 2019-03-22 09:13:39 +11:00
mkdocs Update documentation 2018-11-20 08:53:25 +11:00
scripts Release instructions update 2019-03-22 16:03:11 +11:00
snap Revert "Snapcraft classic confinment to allow access to system resources" 2019-03-25 09:28:06 +11:00
vendor github version of mousetrap required for xcompile 2018-06-20 08:14:14 +10:00
.gitignore Support building snap packages 2018-02-19 08:23:30 +11:00
.travis.yml Bump golang version to 1.11 2019-01-21 09:37:22 +11:00
commands_test.go Add test for --allow-empty flag in merge command 2019-03-22 09:13:39 +11:00
data_navigator_test.go Bump golang version to 1.11 2019-01-21 09:37:22 +11:00
data_navigator.go Bump golang version to 1.11 2019-01-21 09:37:22 +11:00
Dockerfile Bump golang version to 1.11 2019-01-21 09:37:22 +11:00
Dockerfile.dev Rename to yq 2017-12-18 15:29:41 +11:00
json_converter_test.go Task: Increase test coverage, includes refactor 2017-09-22 23:01:46 -04:00
json_converter.go Bump golang version to 1.11 2019-01-21 09:37:22 +11:00
LICENSE Added License (MIT) 2017-02-10 16:00:25 +11:00
Makefile Bump golang version to 1.11 2019-01-21 09:37:22 +11:00
Makefile.variables Rename to yq 2017-12-18 15:29:41 +11:00
merge.go Bump golang version to 1.11 2019-01-21 09:37:22 +11:00
mkdocs.yml Update documentation 2018-11-20 08:53:25 +11:00
path_parser_test.go Feature: Add append to array 2017-09-23 20:21:16 -04:00
path_parser.go Task: Simplify development 2017-09-23 08:37:34 +10:00
README.md Update documentation 2018-11-20 08:53:25 +11:00
release_instructions.txt Release instructions update 2019-03-22 16:03:11 +11:00
test.yml Version bump 2018-10-25 16:05:43 +11:00
utils_test.go Bump golang version to 1.11 2019-01-21 09:37:22 +11:00
version_test.go Incrementing version 2018-06-20 14:29:10 +10:00
version.go Increment version for new functionality 2019-03-22 09:15:26 +11:00
yq_test.go Added Windows support for the "--inplace" command flag 2019-01-07 10:07:08 +11:00
yq.go Add --allow-empty flag to merge command 2019-03-22 09:13:39 +11:00

yq

Build Status Docker Pulls Github Releases (by Release)

a lightweight and portable command-line YAML processor

The aim of the project is to be the jq or sed of yaml files.

Install

On MacOS:

brew install yq

On Ubuntu and other Linux distros supporting snap packages:

snap install yq

On Ubuntu 16.04 or higher from Debian package:

sudo add-apt-repository ppa:rmescandon/yq
sudo apt update
sudo apt install yq -y

or, Download latest binary or alternatively:

go get gopkg.in/mikefarah/yq.v2

Run with Docker

Oneshot use:

docker run -v ${PWD}:/workdir mikefarah/yq yq [flags] <command> FILE...

Run commands interactively:

docker run -it -v ${PWD}:/workdir mikefarah/yq sh

Features

  • Written in portable go, so you can download a lovely dependency free binary
  • Deep read a yaml file with a given path
  • Update a yaml file given a path
  • Update a yaml file given a script file
  • Update creates any missing entries in the path on the fly
  • Create a yaml file given a deep path and value
  • Create a yaml file given a script file
  • Prefix a path to a yaml file
  • Convert from json to yaml
  • Convert from yaml to json
  • Pipe data in by using '-'
  • Merge multiple yaml files where each additional file sets values for missing or null value keys.
  • Merge multiple yaml files and override previous values.
  • Merge multiple yaml files and append array values.
  • Supports multiple documents in a single yaml file

Usage

Check out the documentation for more detailed and advanced usage.

Usage:
  yq [flags]
  yq [command]

Available Commands:
  delete      yq d [--inplace/-i] [--doc/-d index] sample.yaml a.b.c
  help        Help about any command
  merge       yq m [--inplace/-i] [--doc/-d index] [--overwrite/-x] [--append/-a] sample.yaml sample2.yaml
  new         yq n [--script/-s script_file] a.b.c newValue
  read        yq r [--doc/-d index] sample.yaml a.b.c
  write       yq w [--inplace/-i] [--script/-s script_file] [--doc/-d index] sample.yaml a.b.c newValue
  prefix      yq p [--inplace/-i] [--doc/-d index] sample.yaml a.b.c

Flags:
  -h, --help      help for yq
  -t, --trim      trim yaml output (default true)
  -v, --verbose   verbose mode
  -V, --version   Print version information and quit

Use "yq [command] --help" for more information about a command.

Contribute

  1. scripts/devtools.sh
  2. make [local] vendor
  3. add unit tests
  4. apply changes (use govendor with a preference to gopkg for package dependencies)
  5. make [local] build
  6. If required, update the user documentation
    • Update README.md and/or documentation under the mkdocs folder
    • make [local] build-docs
    • browse to docs/index.html and check your changes
  7. profit