/oq

A performant, and portable jq wrapper to facilitate the consumption and output of formats other than JSON; using jq filters to transform the data.

Primary LanguageCrystalMIT LicenseMIT

oq

Built with Crystal Build Status Latest release oq

A performant, portable jq wrapper thats facilitates the consumption and output of formats other than JSON; using jq filters to transform the data.

  • Compiles to a single binary for easy portability.
  • Performant, similar performance with JSON data compared to jq. Slightly longer execution time when going to/from a non JSON format.

Installation

Linux distrobutions supporting snap packages:

snap install oq

MacOS: (Soon)

brew install oq

From Source:

Requires Crystal to be installed, see the installation documentation.

git clone https://github.com/Blacksmoke16/oq.git
cd oq/
shards build --production

The built binary will be available as ./bin/oq. Can copy/move it elsewhere.

Usage

Use the oq binary, with a few custom arguments. All other arguments get passed to jq.

Usage: oq [--help] [oq-arguments] [jq-arguments] jq_filter [file [files...]]
    --help                          Show this help message.
    -i FORMAT, --input FORMAT       Format of the input data. Supported formats: json, yaml.
    -o FORMAT, --output FORMAT      Format of the output data. Supported formats: json, yaml, xml.
    --xml-root ROOT                 Name of the root XML element if converting to XML.

Roadmap

Plans for 1.0.0:

  • XML input format
  • Address bugs/issues that arise
  • Small feature requests
  • Possibly additional formats

Contributing

  1. Fork it (https://github.com/Blacksmoke16/oq/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors