Ações do Github: definindo a variável de ambiente para a saída de comando formatada
Estou tentando atualizar meu README com um texto de ajuda do programa de linha de comando com uma ação do Github. Eu tenho um script, main.js, que produz a seguinte saída:
>> 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
Agora, tento definir uma variável de ambiente em minha ação no Github, mas perco as novas linhas ao imprimi-la. Aqui está meu .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 }}
A etapa "Imprimir HELP_TEXT" produz a seguinte saída (observe a perda de novas linhas):
Generate README from template Main options -i, --input-file-name string -o, --output-file-name string -k, --keys string[] -v, --values string[] -h, --help
Observe que a última etapa do test
trabalho é executar o código que atualiza o conteúdo do meu README; a entrada que ele vê é a mesma que a saída da etapa "Imprimir HELP_TEXT".
Existe alguma maneira de armazenar uma variável de ambiente de forma que a formatação seja preservada?
Respostas
Tive um problema semelhante ao tentar usar o conteúdo do arquivo como corpo de lançamento, resolvido com o truque fornecido por tobiasfaust no 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
Bash magick irá garantir que as novas linhas sejam armazenadas corretamente, tornando a variável env utilizável como parâmetro de ação.