Классный способ запуска dev env

Отлично. Несколько предложений.

Шебанг должен быть #!/usr/bin/env sh, так как это наиболее переносимый вариант. Скрипт не использует специфичные для bash конструкции, поэтому он должен работать в любой оболочке, совместимой с Bourne shell, а не только в bash.

После шебанга добавьте set -e. Это заставит скрипт завершиться, если любая из команд завершится ошибкой. В противном случае он будет продолжать выполнение команд и может завершиться ошибкой позже, например, из-за сбоя bundle install, при этом сообщение об ошибке уже не будет отображаться на экране пользователя.

Теперь касательно git pull для плагинов: это немного более проблематично, так как ошибки, записанные в STDERR, и неудачное выполнение git не будут обработаны должным образом. Поэтому я перенаправил STDERR в STDOUT и отслеживал код выхода.

Нет необходимости в множестве команд cd или в установке переменной PLUGIN_DIR.

#!/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

У меня уже был похожий скрипт, за исключением части с git pull, так как я не хочу, чтобы это происходило каждый раз.

1 лайк