Command-line TOML/JSON/INI/YAML/XML processor using jq c bindings
Project description
wildq - Command-line TOML/JSON/INI/YAML/XML/HCL processor using jq c bindings
Purpose of this package is to provide a simple wrapper arround jq for different formats. I'm tired of searching a package doing yaml jq, toml jq, ini jq etc. mainly used for scripting.
This script uses:
- @mwilliamson Python bindings on top of @stedolan famous jq lib
- @martinblech xmldict to manage XML
- @uiri toml to manage TOML
- @yaml pyyaml to manage YAML
- @virtuald pyhcl to manage HCL
- for INI ConfigParser is used.
Installation
pip install wildq
Usage
wildq [--yaml|--json|--toml|--ini|--xml|--hcl> <jq filter> [file]
There is also a shorter command wq
comming with the package.
Output is similar to jq -MCr
(no color, no compact and no quote on single value)
Like jq cli
, wildq supports both of stdin and file to the function
See examples to get some example.
Content of examples/json.json
{
"general": {
"user": "admin"
},
"keys": [
{"key": "value1"},
{"key": "value2"},
"alone"
]
}
cat examples/json.json | wildq --json ".keys[]"
{
"key": "value1"
}
{
"key": "value2"
}
alone
or
wildq --json ".keys[]" examples/json.json
{
"key": "value1"
}
{
"key": "value2"
}
alone
or
wq --json ".keys[]" examples/json.json
{
"key": "value1"
}
{
"key": "value2"
}
alone
For TOML
cat examples/toml.toml | wildq --toml ".keys[]"
{
"key": "value1"
}
{
"key": "value2"
}
alone
For INI (no array)
cat examples/ini.ini | wildq --ini ".keys"
{
"key1": "value1",
"key2": "value2"
}
For XML
cat examples/xml.xml | wildq --xml "."
{
"root": {
"general": {
"user": "admin"
},
"keys": {
"element": [
{
"key": "value1"
},
{
"key": "value2"
},
"alone"
]
}
}
}
For YAML
cat examples/yaml.yaml | wildq --yaml ".keys[]"
{
"key1": "value1"
}
{
"key2": "value2"
}
alone
For HCL
cat examples/hcl.hcl | wildq --hcl ".keys[]"
{
"key": "value1"
}
{
"key": "value2"
}
Tips and tricks
Loop on keys in bash without creating a subshell
wildq --toml "keys[]" examples/toml.toml | while read -r key
do
echo "Getting key ${key}"
done
TODO
- support all jq types
- add tests...
- add more control over filters and files
- detect automagically filetype
- use click for the CLI
Contributing
Merge requests are welcome :)
License
Licensed under the terms of the Apache License, Version 2.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.