Действия Github: установка переменной среды для вывода форматированных команд
Я пытаюсь обновить свой README с помощью текста справки программы командной строки с помощью Github Action. У меня есть сценарий main.js, который выдает следующий результат:
>> 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
Теперь я пытаюсь установить переменную среды в своем действии Github, но теряю символы новой строки, когда распечатываю ее. Вот мой .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 }}
Шаг «Печать HELP_TEXT» дает следующий результат (обратите внимание на потерю новых строк):
Generate README from template Main options -i, --input-file-name string -o, --output-file-name string -k, --keys string[] -v, --values string[] -h, --help
Обратите внимание, что на последнем этапе test
задания выполняется код, обновляющий содержимое моего README; входные данные, которые он видит, такие же, как выходные данные шага «Печать HELP_TEXT».
Есть ли способ сохранить переменную окружения, чтобы форматирование сохранялось?
Ответы
Была аналогичная проблема при попытке использовать содержимое файла в качестве тела выпуска, решенная с помощью трюка, предоставленного tobiasfaust на 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 позаботится о том, чтобы новые строки сохранялись правильно, что делает переменную env пригодной для использования в качестве параметра действия.