Website • Tutorial • Live demo • CLI version • Compile-to-JS version
Emuto is a small language for manipulating and restructuring JSON and other data files. Emuto is inspired by jq and GraphQL
Features
- Transform and query data structures
- Integrate with unix commands in the command line
- Conversions between different file formats
- Supported input formats: JSON, text, csv, tsv, dsv
- Supported output formats: JSON, text
- Available as a Webpack loader
Getting started
Emuto as a CLI tool
npm install -g emuto emuto-cli
For Arch Linux users, also available as an AUR package
Webpack loader for emuto
yarn add --dev emuto emuto-loader
Read more in the Webpack guide
What is emuto good for? Examples
Number of items in JSON file
curl my_file.json | emuto 'length'
Your karma on HackerNews
curl https://hacker-news.firebaseio.com/v0/user/kantord.json -s | emuto '$.karma'
Convert another command's output to JSON
ls | emuto -i=raw '$[0:-1]'
See number of NPM dependencies
cat package.json | emuto -c '$.dependencies | keys | length'
List available scripts in package.json
cat package.json | emuto -c '$.scripts | keys | join " · "'
Get only the relevant data from a huge JSON file
curl https://api.github.com/repos/stedolan/jq/commits |\emuto -c 'map ($ => $ { commit { message } committer { login } } )'
Automate the restructuring of data by creating scripts with emuto
restructure.emu
#! emuto -s $ | map ($ => $ { commit { message } committer { login } } ) | map ($ => { "committer": $.committer.login, "message": $.commit.message, })
Calling your script
curl https://api.github.com/repos/stedolan/jq/commits | ./restructure.emu
Contributing Guide
Read our contributing guide to learn about our development process, how to create bugfixes and improvements, and how to build and test your changes to emuto.