Azioni GitHub: impostazione della variabile di ambiente sull'output del comando formattato
Sto cercando di aggiornare il mio README con il testo della guida di un programma a riga di comando con un'azione Github. Ho uno script, main.js che produce il seguente output:
>> node main.js -h
Generate README from template
Main options
-i, --input-file-name string
-o, --output-file-name string
-k, --keys string[]
-v, --values string[]
-h, --help
Ora, cerco di impostare una variabile d'ambiente nella mia azione Github, ma perdo le nuove righe quando la stampo. Ecco il mio .github / workflows / main.yml:
name: Test Action
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Get Help Text
run: |
echo ::set-env name=HELP_TEXT::$(node main.js -h) - name: Print HELP_TEXT run: | echo "$HELP_TEXT"
- name: Regenerate README.md
uses: ./
with:
key: help
value: ${{ env.HELP_TEXT }}
Il passaggio "Stampa HELP_TEXT" produce il seguente output (nota perdita di nuove righe):
Generate README from template Main options -i, --input-file-name string -o, --output-file-name string -k, --keys string[] -v, --values string[] -h, --help
Notare che l'ultimo passaggio del test
lavoro è l'esecuzione del codice che aggiorna il contenuto del mio README; l'input che vede è lo stesso dell'output dal passaggio "Print HELP_TEXT".
C'è un modo per memorizzare una variabile d'ambiente in modo tale che la formattazione venga preservata?
Risposte
Ha avuto un problema simile durante il tentativo di utilizzare il contenuto del file come corpo di rilascio, risolto con il trucco fornito da tobiasfaust su GitHub :
- run: |
body=$(cat NEWS.md) body="${body//'%'/'%25'}"
body="${body//$'\n'/'%0A'}"
body="${body//$'\r'/'%0D'}"
echo "::set-env name=MOD_RELEASE_BODY::$body"
shell: bash
La magia Bash farà in modo che le nuove righe siano memorizzate correttamente, rendendo la variabile env utilizzabile come parametro di azione.