4
votes

comment générer une "boucle for" dans un fichier YAML

supposons que nous ayons le YAML suivant

enum: [s1,s2,s3,s4]
a:
for t in enum:
  -t:p

y a-t-il une syntaxe utilisant la boucle for pour générer ce fichier YAML

comme:

a:
  - s1: p
  - s2: p
  - s3: p
  - s4: p


2 commentaires

Il n'y a rien dans YAML qui puisse faire cela, mais il existe une multitude de programmes qui utilisent un système de modèle (par exemple jinja2 ) qui se développe en YAML. Vous devriez donc rechercher un système de modèles pour le langage de programmation que vous utilisez.


BTW, vous obtenez de meilleurs blocs de code / YAML si vous sélectionnez le bloc et appuyez sur Ctrl + K pour indenter tout le bloc au lieu de mettre des guillemets autour du bloc (ce sont mieux pour les morceaux de code en ligne)


3 Réponses :


0
votes

YAML est un langage de sérialisation de données lisible par l'homme. C'est communément utilisé pour les fichiers de configuration, mais pourrait être utilisé dans de nombreuses applications où les données sont stockées ou transmises.

Faire une boucle dessus est une tâche très facile que vous pouvez réaliser avec n'importe quel langage de programmation.

Par exemple, vous pouvez le faire dans bash comme suit:

enum="s1 s2 s3 s4"

cat <<EOF> test.yml
a:
`for t in $enum; do echo "  -${t}:p"; done`
EOF

2 commentaires

Mais dans mon cas, le yaml généré de cette manière deviendra très long et perdra en lisibilité. Je pense que c'est une méthode pour raccourcir yaml par une telle méthode.


Je vois ce que tu veux dire. Malheureusement, YAML n'est pas fait pour cela. Vous devriez une solution alternative, comme un modèle pour générer le yaml de production .



2
votes

Il n'y a aucun moyen de raccourcir un fichier YAML comme vous prévoyez de le faire.

Une solution serait un script qui interprète le fichier et le raccourcit comme vous le souhaitez, ce qui ne serait utilisable que pour la lisibilité.


0 commentaires

0
votes

Je pense que vous essayez quelque chose comme le modèle yaml dans azure devops: Essayez quelque chose comme:

${{each img in parameters.images}}:
      ${{img.key}}:


0 commentaires