Schöne Art, eine Entwicklungsumgebung zu betreiben

Schön. Ein paar Vorschläge.

Der Shebang sollte #!/usr/bin/env sh lauten, was am portabelsten ist. Das Skript verwendet keine Bash-spezifischen Befehle, daher sollte es in jeder Bourne-Shell-kompatiblen Shell funktionieren, nicht nur in Bash.

Fügen Sie nach dem Shebang set -e hinzu. Dies bewirkt, dass das Skript beendet wird, wenn einer der Befehle fehlschlägt. Andernfalls werden Befehle weiterhin ausgeführt und schlagen später fehl, weil beispielsweise bundle install fehlgeschlagen ist und die Fehlerausgabe nun vom Bildschirm des Benutzers verschwunden ist.

Nun ist der Plugin-Git-Pull etwas problematischer, da Fehler, die an STDERR geschrieben werden, und eine fehlschlagende Git-Ausführung nicht ordnungsgemäß behandelt werden. Daher habe ich STDERR auch an STDOUT weitergeleitet und den Exit-Code verfolgt.

Es werden keine cd-Befehle oder die Variable PLUGIN_DIR benötigt.

#!/usr/bin/env sh
set -e

cd ~/discourse
git pull

for folder in plugins/*; do
  if [ -d "$folder/.git" ]; then
    exitcode=0
    output=$(git -C "$folder" pull 2>&1) || exitcode=$?
    if echo "$output" | grep -q -v "Already up to date."; then
      echo "[$(basename "$folder")]"
      echo "$output"
      [ "$exitcode" -ne 0 ] && exit "$exitcode"
    fi
  fi
done

bundle install
pnpm install
bin/rails db:migrate
DISCOURSE_HOSTNAME=localhost UNICORN_LISTENER=localhost:3000 bin/ember-cli -u

Ich hatte bereits ein ähnliches Skript, außer dem Git-Pull, da ich nicht möchte, dass dies jedes Mal geschieht.

1 „Gefällt mir“