Acciones de Github: configuración de la variable de entorno en la salida del comando con formato

Aug 18 2020

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 testtrabajo 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

1 Samira Aug 18 2020 at 19:52

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.