5
votes

Si la condition est possible dans le fichier yaml?

J'ai besoin d'ajouter un autre nom en fonction de la condition if. Si si la valeur de la variable d'un autre fichier .yml est "oui", ajoutez un nouveau nom dans la liste

J'ai le code suivant dans mon fichier yaml:

JsNames:
 - name: 'jquery.min.js'
 - name: 'script.js'
 - name: 'new.js'

Je dois ajouter plus de nom en fonction de la condition. Si la valeur de la variable d'un autre fichier .yml est "oui", ajoutez un nouveau nom comme celui-ci:

JsNames:
 - name: 'jquery.min.js'
 - name: 'script.js'
 - | # Test multiline yaml support
   if [[ "site.data.settings.requiredjs" == "yes" ]]; then
     name: 'new.js'
   fi

est-ce possible?

J'ai essayé ce qui suit:

JsNames:
 - name: 'jquery.min.js'
 - name: 'script.js'
 - name: 'new.js'

J'ai besoin d'ajouter plus de nom en fonction de la condition if. Si la valeur de la variable d'un autre fichier .yml est "yes", ajoutez un nouveau nom comme celui-ci:

JsNames:
 - name: 'jquery.min.js'
 - name: 'script.js'


2 commentaires

Pas avec "juste" YAML. YAML s'apparente à HTML ou JSON à cet égard: consultez la spécification YAML pour savoir ce qui est permis.


Je vous suggère de lire sur YAML (la spécification, le site yaml.org). 1) L'extension recommandée pour les fichiers YAML est .yaml depuis 2006. 2) Vous semblez avoir l'illusion que les scalaires de style bloc littéral sont interprétés par YAML. Il n'y a rien dans la spécification qui fasse même allusion à cela (ce que fait votre programme est bien sûr différent). 3) Vous semblez penser que YAML a une notation en pointillés pour obtenir des valeurs imbriquées. Encore une fois, lisez les spécifications, non.


4 Réponses :


6
votes

Vous ne pouvez pas ajouter de conditions à un fichier yml, ce n'est qu'un format de texte, pas une langue. Mais quand même, vous pouvez charger le fichier yml dans un langage de programmation et appliquer le cas échéant. basé sur une chaîne.


5 commentaires

Merci mille fois pour la réponse, je vous serais reconnaissant de bien vouloir me donner un exemple? et comment ajouter un fichier yml dans un langage de programmation?


consultez ce post: stackoverflow.com/questions/41974628/...


Ce n'est pas vrai. dans mon code par exemple, j'utilise le code suivant nagiosgroup: "{{'srv-test' if Inventory_hostname in groups ['KISS_ACPT'] else 'srv-dev'}}"


Ce n'est pas vrai. dans mon code par exemple, j'utilise le code suivant vartodefine: "{{'value1' if Inventory_hostname in groups ['BLAH'] else 'value2'}}"


Je voulais exécuter un script bash dans yaml, pouvez-vous jeter un œil à cette question s'il vous plaît? stackoverflow.com/questions/65214195/...



4
votes

En complément de la réponse de Vaibhav: bien que yml ne supporte pas intrinsèquement les instructions if, certaines applications qui utilisent des fichiers yml pour les instructions peuvent être capables d'analyser les instructions if incluses dans le yml. GitLab est un exemple notable. Dans le CI / CD de GitLab, le fichier .gitlab-ci.yml peut être configuré pour inclure des instructions if telles que:

job:
  script: "echo Hello, Rules!"
  rules:
    - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"'
      when: always
    - if: '$VAR =~ /pattern/'
      when: manual
    - when: on_success

Ceci provient de https://docs.gitlab.com/ee/ci/yaml/#rules .


1 commentaires

Qu'en est-il d'un script bash dans le fichier yml? Quel est le bon format? J'ai une question ici, j'essaie de la résoudre depuis longtemps, pourriez-vous jeter un coup d'oeil s'il vous plaît stackoverflow.com/questions/65214195/... < / a>



0
votes

Essayez ce code, le mot "élément" pourrait être ce que vous voulez:

{% for item in JsNames %}
  {% if name == 'jquery.min.js' %}
    excute your code
  {% elif name == 'script.js' %}
    excute your code
  {% else %}
    excute your code
  {% endif %}
{% else %}
  some error message
{% endfor %}


0 commentaires

0
votes

Essayez ceci

vartodefine: "{{ 'value1' if condition else 'value2' }}"


0 commentaires