qq est un transcodeur de format de configuration interopérable inspiré de jq (et dépendant de gojq) avec une syntaxe de requête interactive. Il est multi-modal et peut être utilisé comme un remplacement pour jq ou être interagi avec via un REPL avec autocomplétion et prévisualisation en temps réel pour la construction de requêtes.
Utilisation de base :
# JSON est le format par défautcat fichier.${ext} | qq -i ${ext}# requête xml, grep avec gron en utilisant qq ioqq fichier.xml -o gron | grep -vE "sweet.potatoes" | qq -i gron# mode interactif de construction de requête sur le fichier cibleqq . fichier.toml --interactive
Depuis brew :
brew install jfryy/tap/qq
Depuis la source (nécessite make) :
make install
Téléchargez sur les releases.
Démarrage rapide avec Docker :
# installer l'imagedocker pull jfryy/qq# exécuter un exempleecho '{"foo":"bar"}' | docker run -i jfryy/qq '.foo = "bazz"' -o tf
qq est inspiré par jq et gron. C’est un outil de requête puissant et succinct, parfois je me retrouvais à devoir utiliser un autre outil sur mesure pour un autre format que le JSON, que ce soit quelque chose de dédié avec une requête JSON intégrée ou un simple convertisseur d’un format de configuration à JSON pour le passer à jq. qq vise à être une utilité pratique dans le terminal ou dans les scripts shell qui peut être utilisée pour la plupart des interactions avec des formats structurés dans le terminal. Il peut transcoder les formats de configuration de manière interchangeable les uns avec les autres avec la puissance de gojq et il a un mode interactif en prime pour que vous puissiez avoir une expérience interactive lors de la construction de requêtes en option. Un grand merci aux auteurs des bibliothèques utilisées dans ce projet, en particulier gojq, jq, gron et yq pour une utilisation directe et/ou l’inspiration du projet.
Format | Entrée | Sortie |
---|---|---|
JSON | ✅ Pris en charge | ✅ Pris en charge |
YAML | ✅ Pris en charge | ✅ Pris en charge |
TOML | ✅ Pris en charge | ✅ Pris en charge |
XML | ✅ Pris en charge | ✅ Pris en charge |
INI | ✅ Pris en charge | ✅ Pris en charge |
HCL | ✅ Pris en charge | ✅ Pris en charge |
TF | ✅ Pris en charge | ✅ Pris en charge |
GRON | ✅ Pris en charge | ✅ Pris en charge |
CSV | ✅ Pris en charge | ❌ Non pris en charge |
Protobuf | ❌ Non pris en charge | ❌ Non pris en charge |
HTML | ❌ Non pris en charge | ❌ Non pris en charge |
Toutes les contributions sont les bienvenues pour qq, en particulier pour la maintenance, l’optimisation et l’ajout de nouveaux encodages. Pour des idées de contributions, consultez le fichier CONTRIBUTING.md ou créez une issue/PR pour une suggestion si quelque chose est souhaité ou corrigé.
Ce projet ne serait pas possible sans les projets suivants, ce projet est sans doute plus une composition de ces projets qu’une œuvre vraiment originale, avec du code de collage, quelques encodeurs/décodeurs dédiés et le mode interactif étant un travail original. Néanmoins, j’espère que ce projet pourra être utile à d’autres, et j’espère contribuer à la communauté avec ce projet.