bash - generate - travis github
¿Cómo usar el comando multilínea en ''script:'' con YAML? (2)
Tengo un repositorio que utiliza Travis CI
, y en el .travis.yml
tengo esta línea:
script:
- vim -Nu <(cat <<-EOF
set nocompatible |
filetype off
EOF
) -c ''Script'' > /dev/null
Lamentablemente esto no funciona, ya que se transforma en una sola línea y se ejecuta así:
vim -Nu <(cat <<-EOF set no compatible | filetype off | EOF ) -c ''Script'' > /dev/null
Esto hace que la etiqueta EOF
no funcione, ya que EOF
debe estar en una sola línea. Una alternativa sería usar citas normales como esta:
script:
- vim -Nu <(cat ''set nocompatible |
filetype off
) -c ''Script'' > /dev/null
Lo cual funciona, y está bien, pero creo que debe haber una manera de insertar nuevas líneas en un .travis.yml
. Tengo una alternativa ahora, pero puede que no en el futuro. Entonces, ¿cómo lo haces?
En YAML puede especificar nuevas líneas en un escalar usando ""
citando y escapando de las nuevas líneas ( /n
), y, y eso es más natural para su caso, usando un escalar de bloque de estilo literal :
script:
- |
vim -Nu <(cat <<-EOF
set nocompatible |
filetype off
EOF
) -c ''Script'' > /dev/null
Este es un escalar que comienza con una línea con un |
(símbolo de canalización), seguido de varias líneas para las que se conservan los saltos de línea.
- Las líneas están normalmente sangradas (excepción: un solo escalar de bloque de estilo literal de nivel superior).
- Después de la
|
puede haber modificadores:1
-9
, que se utilizan cuando su primera línea comienza con espacios;+
,-
para influir en la eliminación de las nuevas líneas finales (normalmente colapsadas en una sola).
Utilizo dicho formato para lograr exactamente el efecto deseado.
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