개발 환경을 실행하는 멋진 방법

좋습니다. 몇 가지 제안사항이 있습니다.

shebang은 #!/usr/bin/env sh로 설정하는 것이 가장 호환성이 좋습니다. 스크립트에 bash 전용 기능이 사용되지 않으므로 bash가 아닌 다른 Bourne shell 호환 셸에서도 작동해야 합니다.

shebang 다음에 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개의 좋아요