AccueilContact

qq - Transcodeur de Formats de Configuration Interopérable

Publié dans DevOps
11 juillet 2024
2 min read
qq - Transcodeur de Formats de Configuration Interopérable

qq

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

Utilisation de base :

# JSON est le format par défaut
cat fichier.${ext} | qq -i ${ext}
# requête xml, grep avec gron en utilisant qq io
qq fichier.xml -o gron | grep -vE "sweet.potatoes" | qq -i gron
# mode interactif de construction de requête sur le fichier cible
qq . fichier.toml --interactive

Installation

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'image
docker pull jfryy/qq
# exécuter un exemple
echo '{"foo":"bar"}' | docker run -i jfryy/qq '.foo = "bazz"' -o tf

Contexte

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.

Fonctionnalités

  • Prend en charge une large gamme de formats de configuration et les transforme de manière interchangeable les uns avec les autres.
  • Interrogation rapide et complète des formats de configuration sans avoir besoin d’une chaîne d’outils dédiée.
  • Fournit un mode interactif pour la construction de requêtes avec autocomplétion et prévisualisation en temps réel.
  • Les encodages performants sont une priorité, l’exécution est assez rapide malgré la couverture d’une large gamme de codecs. qq est compétitif avec des outils dédiés pour un format donné.

Formats pris en charge

FormatEntréeSortie
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

Limitations

  • qq n’est pas un remplacement complet de jq et présente des particularités de la bibliothèque sous-jacente.
  • Les encodeurs et décodeurs ne sont pas parfaits et peuvent ne pas être en mesure de gérer tous les cas particuliers.
  • qq est en développement actif et d’autres codecs sont prévus pour être pris en charge ainsi que des améliorations de l’interface interactive.

Contributions

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é.

Remerciements et Mentions / Projets Connexes

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.

Source de l’article


Share

Article précédent
Élections françaises - attaques cybernétiques politiques et changements de trafic Internet

Articles similaires

Analyse de la panne du réseau Rogers
11 juillet 2024
1 min
© 2024, All Rights Reserved.

Liens Rapides

Partenariats et opportunités publicitairesContactez nous

Réseaux Sociaux