Skip to content

Instantly share code, notes, and snippets.

@128keaton
Last active January 17, 2023 09:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 128keaton/b2273eae9e28de0ac92d27b26daef369 to your computer and use it in GitHub Desktop.
Save 128keaton/b2273eae9e28de0ac92d27b26daef369 to your computer and use it in GitHub Desktop.
Simple script to update a SPA
#!/bin/bash
# Spinner code stolen from https://willcarh.art/blog/how-to-write-better-bash-spinners
trap stop_spinner EXIT
function start_spinner {
set +m
echo -n "$1 "
{ while : ; do for X in ' • ' ' • ' ' • ' ' • ' ' • ' ' • ' ' • ' ' • ' ' • ' ' • ' ; do echo -en "\b\b\b\b\b\b\b\b$X" ; sleep 0.1 ; done ; done & } 2>/dev/null
spinner_pid=$!
}
function stop_spinner {
{ kill -9 $spinner_pid && wait; } 2>/dev/null
set -m
echo -en "\033[2K\r"
}
echo > update-app.log
printf "Updating UI. "
cd /home/arfid/ARFID-UI/
git reset --hard HEAD &>> update-app.log
git pull &>> update-app.log
printf "Done!"
echo
spinner_pid=
start_spinner "Installing UI dependencies. "
npm install --force &>> update-app.log
stop_spinner
printf "Installing UI dependencies. Done!"
echo
spinner_pid=
start_spinner "Rebuilding UI. "
npm run build &>> update-app.log
stop_spinner
printf "Rebuilding UI. Done!"
echo
printf "Updating API."
cd /home/arfid/ARFID/ &&
git reset --hard HEAD &>> update-app.log
git pull &>> update-app.log
printf " Done!"
echo
spinner_pid=
start_spinner "Updating API dependencies. "
npm install &>> update-app.log
stop_spinner
printf "Updating API dependencies. Done!"
echo
printf "Updating database schema."
npx prisma migrate deploy &>> update-app.log
printf " Done!"
echo
printf "Generating database types."
npx prisma generate &>> update-app.log
printf " Done!"
echo
spinner_pid=
start_spinner "Rebuilding API. "
npm run build &>> update-app.log
stop_spinner
printf "Rebuilding API. Done!"
echo
printf "Restarting application."
pm2 restart arfid &>> update-app.log
printf " Done!"
echo
echo "Logfile available at update-app.log"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment