Boa maneira de executar um ambiente de desenvolvimento

Legal. Algumas sugestões.

O shebang deve ser #!/usr/bin/env sh, que é o mais portável. O script não usa nenhum bashismo, então deve funcionar em qualquer shell compatível com Bourne shell, não apenas bash.

Após o shebang, adicione set -e. Isso fará com que o script saia se algum dos comandos falhar. Caso contrário, ele continuará executando comandos e falhando mais tarde porque algo como bundle install falhou, e a saída de erro desapareceu da tela do usuário.

Agora, o git pull do plugin é um pouco mais problemático, pois erros escritos em STDERR e uma execução git falha não serão tratados adequadamente. Então, enviei STDERR também para STDOUT e acompanhei o código de saída.

Não há necessidade de um monte de comandos cd, ou de definir a variável 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

Eu já tinha um script semelhante, exceto pelo git pulling, pois não quero que isso aconteça toda vez.

1 curtida