Lorsque j'étais venu vous présenter loco.sh il y a quelques mois, l'utilisation de YAML avait fait débat. À l'époque il n'y avait pas de solutions de parsing complète pour YAML en bash.
Après de nombreuses difficultés à trouver à la fois une solution performante et portable, j'ai décidé de développer yb
.
Yb
c'est un parser YAML développé en bash, qui s'appuie sur des techniques modernes de programmation pour être un minimum performant.
Je viens tout juste de finaliser l'implémentation de l'option -r
qui permet de supprimer des clés dans les fichiers YAML. Je vous invite donc à aller voir le repo et me faire vos retours, surtout vos bugs !
- Gitlab - YB - https://gitlab.com/t0pd4wn/yb
# YAML, je ne pratique pas, mais…
Posté par Claude SIMON (site web personnel) . Évalué à 5. Dernière modification le 21 juillet 2023 à 07:44.
…après une rapide recherche, j'ai dégotté :
Question portabilité et performance, par rapport à du Bash, ça se pose là quand même…
Pour nous émanciper des géants du numérique : Zelbinium !
[^] # Re: YAML, je ne pratique pas, mais…
Posté par Benoît Sibaud (site web personnel) . Évalué à 6.
yq fait plus que juste du YAML depuis un bon moment : yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor
# C'est une révolution
Posté par Enzo Bricolo 🛠⚙🛠 . Évalué à 7.
On a enfin les outils pour être aussi efficace qu'avec le XML !
# Limitations
Posté par barmic 🦦 . Évalué à 6.
Il me semble qu'yb a beaucoup de limitations. Par exemple avec le fichier :
et la commande :
Je m'attends à avoir ma chaine sur une double ligne :
Et pas mon pipe…
Ne pas gérer les fonctionnalités plus complexes comme les références me semble être une utilisation avancée, mais pour ce qui est des chaines de caractères multiligne c'est l'une des fonctionnalités très utilisées de yaml.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
# Pourquoi pas en brainfuck ?
Posté par Andre Rodier (site web personnel) . Évalué à -5.
Quitte à écrire un truc inutile et impossible à maintenir…
[^] # Re: Pourquoi pas en brainfuck ?
Posté par barmic 🦦 . Évalué à 2. Dernière modification le 21 juillet 2023 à 16:41.
Sympathique comme message
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
# c'est quoi ?
Posté par steph1978 . Évalué à 8.
des "des techniques modernes de programmation pour être un minimum performant." ? Tu peux détailler ?
# les réponses
Posté par t0pd4wn . Évalué à 2. Dernière modification le 22 juillet 2023 à 16:36.
Merci pour ces retours !
yb
devrait supporter prochainement "|" et ">" ; par ailleurs, il ne me semble pas queyq
supporte une option-k
;)à bientôt pour la V1.0 !
# c'est pas yaml ;)
Posté par fearan . Évalué à 4.
y'a des bug, typiquement les no ne sont pas transformé en false :D pareil pour les y/n/on/off… et j'en passe. C'est important parce qu'on s'attend a avoir une seule chose à tester, et pas 10 ou 20 pour évaluer une valeur booléenne.
https://makandracards.com/makandra/24809-yaml-keys-like-yes-or-no-evaluate-to-true-and-false
Bien évidemment ce n'est pas à convertir si c'est protégé par des quote ;)
de même les chaines de type 12:42 ne sont pas traduit en 702.
Donc c'est pas un parser yaml.
pour tester si on fait bien les conversion on peut regarder là.
https://yaml-online-parser.appspot.com/
donne en json
pour éviter ces déboires avec le yaml vaut mieux tout quotter;
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: c'est pas yaml ;)
Posté par t0pd4wn . Évalué à 0.
Merci pour ce feedback très intéressant. Comme je ne comptais pas traduire vers d'autres langages que YAML, je ne m'étas pas interrogé sur la transformation au regard du typage.
Peut-être que je devrais réintituler le projet "Yaml reader" ou ajouter une option
-T
qui supportera le typage. ;)[^] # Re: c'est pas yaml ;)
Posté par fearan . Évalué à 3. Dernière modification le 25 juillet 2023 à 12:51.
y'a pas que le typage, y'a les alias et indirections; yaml est particulièrement compliqué comme langage, contrairement au json.
par exemple
donne en json
et avec ton script :
là on est faux; et je dirai même plus problématique; car le seul avantage du yaml par rapport au json, c'est justement cette capacité d'alias; les conversion de clé octales, booléennes sont à s'arracher les cheveux, et ne devraient pas être gérés par le yaml.
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: c'est pas yaml ;)
Posté par t0pd4wn . Évalué à 0.
Merci pour ce commentaire que je ne découvre qu'aujourd'hui. Je vais ajouter une mention dans le README sur ce qui n'est pas supporté.
[^] # Re: c'est pas yaml ;)
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 2.
Attention que YAML a beaucoup beaucoup de cas spéciaux… https://yaml.org/spec/ (ce qui rend l'utilisation de bash pas du tout trivial …à supposer qu'on y arrive.)
Il faut peut-être se caler sur StrictYAML ? https://github.com/crdoconnor/strictyaml#design-justifications
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.