2012-05-13 22 views
9

Come faccio a uscire da un'intera linea in YAML? Voglio avere json='{"title": "travis_saulshanabrook_site","key": "'$(cat ~/.ssh/id_rsa.pub)'"}' in una lista, ma non riesco a farlo analizzare in una stringa. Posso mettere le virgolette su tutta la linea, ma poi dovrei sfuggire ogni singola citazione nella mia stringa, rendendo molto difficile la lettura. La stringa verrà eseguito come un comando bash in Travis CICome quotare YAML (per Travis CI)

risposta

8

La soluzione più elegante è quella di utilizzare l'indicatore literal style|, con il modificatore - per mettere a nudo il ritorno a capo finale. In questo modo non sono necessarie citazioni aggiuntive.

Se questo scalare sembra essere l'unica cosa che in un uso file YAML:

|- 
    json='{"title": "travis_saulshanabrook_site","key": "'$(cat ~/.ssh/id_rsa.pub)'"}' 

se si tratta di un valore di mappatura per la chiave abc:

abc: |- 
    json='{"title": "travis_saulshanabrook_site","key": "'$(cat ~/.ssh/id_rsa.pub)'"}' 

o se fa parte di un lista:

- |- 
    json='{"title": "travis_saulshanabrook_site","key": "'$(cat ~/.ssh/id_rsa.pub)'"}' 
1

Non sono sicuro che ci sia una soluzione che rende fughe quella stringa e lo rende facile da leggere.

FYI questo è ciò che appare come stringa sfuggito:

script: ! 'your_cmd json=''{"title": "travis_saulshanabrook_site","key": "''$(cat ~/.ssh/id_rsa.pub)''"}'''