Acciones de Github: configuración de la variable de entorno en la salida del comando con formato
Estoy intentando actualizar mi README con el texto de ayuda de un programa de línea de comandos con una acción de Github. Tengo un script, main.js que produce el siguiente resultado:
>> 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
Ahora, intento establecer una variable de entorno en mi acción de Github, pero pierdo las nuevas líneas cuando las imprimo. Aquí está mi .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 }}
El paso "Imprimir HELP_TEXT" produce el siguiente resultado (tenga en cuenta la pérdida de nuevas líneas):
Generate README from template Main options -i, --input-file-name string -o, --output-file-name string -k, --keys string[] -v, --values string[] -h, --help
Tenga en cuenta que el último paso del test
trabajo es ejecutar el código que actualiza el contenido de mi archivo README; la entrada que ve es la misma que la salida del paso "Imprimir HELP_TEXT".
¿Hay alguna forma de que pueda almacenar una variable de entorno de modo que se conserve el formato?
Respuestas
Tuve un problema similar al intentar usar el contenido del archivo como cuerpo de la versión, resuelto con el truco proporcionado por tobiasfaust en 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 se asegurará de que las nuevas líneas se almacenen correctamente, haciendo que la variable env se pueda usar como parámetro de acción.