J'ai un référentiel qui utilise Travis CI
, et dans le .travis.yml
là j'ai cette ligne:
script:
- vim -Nu <(cat <<-EOF
set nocompatible |
filetype off
EOF
) -c 'Script' > /dev/null
Malheureusement, cela ne fonctionne pas, car cela est transformé en une seule ligne et est exécuté comme ceci:
vim -Nu <(cat <<-EOF set no compatible | filetype off | EOF ) -c 'Script' > /dev/null
Cela rend la balise EOF
inopérante, car EOF
doit être sur une seule ligne. Une alternative serait d'utiliser simplement des citations normales comme ceci:
script:
- vim -Nu <(cat 'set nocompatible |
filetype off
) -c 'Script' > /dev/null
Ce qui fonctionne, et c'est bien, mais je pense qu'il doit y avoir un moyen d'insérer des sauts de ligne dans un .travis.yml
. J'ai une alternative maintenant, mais je ne le ferai peut-être pas à l'avenir. Alors comment tu fais?
Dans YAML, vous pouvez spécifier des sauts de ligne dans un scalaire en utilisant ""
citant et échappant aux sauts de ligne (\n
), ou, et c'est plus naturel pour votre cas, en utilisant un bloc de style littéral scalaire :
script:
- |
vim -Nu <(cat <<-EOF
set nocompatible |
filetype off
EOF
) -c 'Script' > /dev/null
Il s'agit d'un scalaire commençant par une ligne avec un |
(symbole de tuyau), suivi de plusieurs lignes pour lesquelles les sauts de ligne sont conservés.
|
il peut y avoir des modificateurs: 1
-9
, utilisé lorsque votre première ligne commence par des espaces; +
, -
pour influencer la suppression des nouvelles lignes finales (normalement regroupées en une seule).J'utilise un tel format pour obtenir exactement l'effet souhaité
script:
- >
valgrind
--read-var-info=yes
--error-exitcode=1
--fullpath-after=
--track-origins=yes
--leak-check=full
--num-callers=20
--suppressions=$(pwd)/tests/zephir_parser.3.7.0.sup
$(phpenv which php)
-d variables_order=EGPCS
run-tests.php
-p $(which php)
-d extension=$(pwd)/modules/zephir_parser.so
-d variables_order=EGPCS
-g "FAIL,XFAIL,BORK,WARN,LEAK,SKIP"
--offline
--show-diff
--set-timeout 120