Nice. Un par de sugerencias.
El shebang debería ser #!/usr/bin/env sh, que es el más portable. El script no usa ningún bashismo, por lo que debería funcionar en cualquier shell compatible con Bourne shell, no solo bash.
Después del shebang, añade set -e. Esto hará que el script salga si alguno de los comandos falla. De lo contrario, continuará ejecutando comandos y fallará más tarde porque algo como bundle install falló, y la salida de error ya no está en la pantalla del usuario.
Ahora, el git pull del plugin es un poco más problemático, ya que los errores escritos en STDERR y una ejecución fallida de git no se manejarán correctamente. Así que he enviado STDERR también a STDOUT y he hecho un seguimiento del código de salida.
No hay necesidad de un montón de comandos cd, ni de establecer la variable 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
Ya tenía un script similar, excepto por el git pulling, ya que no quiero que eso suceda cada vez.