Github-Aktionen: Umgebungsvariable auf formatierte Befehlsausgabe setzen

Aug 18 2020

Ich versuche, meine README mit dem Hilfetext eines Befehlszeilenprogramms mit einer Github-Aktion zu aktualisieren. Ich habe ein Skript, main.js, das die folgende Ausgabe erzeugt:

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

Jetzt versuche ich, eine Umgebungsvariable in meiner Github-Aktion festzulegen, aber ich verliere die Zeilenumbrüche, wenn ich sie ausdrucke. Hier ist meine .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 }}

Der Schritt "HELP_TEXT drucken" erzeugt die folgende Ausgabe (Verlust von Zeilenumbrüchen beachten):

Generate README from template Main options -i, --input-file-name string -o, --output-file-name string -k, --keys string[] -v, --values string[] -h, --help

Beachten Sie, dass im letzten Schritt des testJobs der Code ausgeführt wird, der den Inhalt meiner README-Datei aktualisiert. Die angezeigte Eingabe entspricht der Ausgabe aus dem Schritt "HELP_TEXT drucken".

Gibt es eine Möglichkeit, eine Umgebungsvariable so zu speichern, dass die Formatierung erhalten bleibt?

Antworten

1 Samira Aug 18 2020 at 19:52

Hatte ein ähnliches Problem beim Versuch, Dateiinhalte als Release-Body zu verwenden, das mit dem von tobiasfaust auf GitHub bereitgestellten Trick gelöst wurde :

- 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 stellt sicher, dass Zeilenumbrüche ordnungsgemäß gespeichert werden, sodass die Variable env als Aktionsparameter verwendet werden kann.