moviewyrm/bw-dev
Joel Bradshaw b4c6587972 Fix bw-dev resetdb, some tweaks to bw-dev
The main fix here is for resetdb, it previously was failing to drop the
db for me, because `web` was up and running and using the database. This
commit spins up db by itself first so it can drop and re-create the
database successfully, then brings up web to run the migrations.

While I was in here, I also updated it so that when running `bw-dev`
without any command it will also print the helptext, rather than just
exiting silently, got rid of the double-echo of the helptext, and added
runweb/rundb commands to run arbitrary commands via bw-dev.
2021-07-05 13:20:14 -07:00

128 lines
2.9 KiB
Bash
Executable file

#!/bin/bash
# exit on errors
set -e
# import our ENV variables
# catch exits and give a friendly error message
function showerr {
echo "Failed to load configuration! You may need to update your .env and quote values with special characters in them."
}
trap showerr EXIT
source .env
trap - EXIT
function clean {
docker-compose stop
docker-compose rm -f
}
function runweb {
docker-compose run --rm web "$@"
}
function execdb {
docker-compose exec db $@
}
function execweb {
docker-compose exec web "$@"
}
function initdb {
execweb python manage.py migrate
execweb python manage.py initdb
}
function makeitblack {
docker-compose run --rm web black celerywyrm bookwyrm
}
CMD=$1
if [ -n "$CMD" ]; then
shift
fi
# show commands as they're executed
set -x
case "$CMD" in
up)
docker-compose up --build "$@"
;;
run)
docker-compose run --rm --service-ports web
;;
initdb)
initdb
;;
resetdb)
clean
# Start just the DB so no one else is using it
docker-compose up --build -d db
execdb dropdb -U ${POSTGRES_USER} ${POSTGRES_DB}
execdb createdb -U ${POSTGRES_USER} ${POSTGRES_DB}
# Now start up web so we can run the migrations
docker-compose up --build -d web
initdb
clean
;;
makemigrations)
runweb python manage.py makemigrations "$@"
;;
migrate)
runweb python manage.py migrate "$@"
;;
bash)
runweb bash
;;
shell)
runweb python manage.py shell
;;
dbshell)
execdb psql -U ${POSTGRES_USER} ${POSTGRES_DB}
;;
restart_celery)
docker-compose restart celery_worker
;;
test)
runweb coverage run --source='.' --omit="*/test*,celerywyrm*,bookwyrm/migrations/*" manage.py test "$@"
;;
pytest)
execweb pytest --no-cov-on-fail "$@"
;;
collectstatic)
runweb python manage.py collectstatic --no-input
;;
makemessages)
runweb django-admin makemessages --no-wrap --ignore=venv --all $@
;;
compilemessages)
runweb django-admin compilemessages --ignore venv $@
;;
build)
docker-compose build
;;
clean)
clean
;;
black)
makeitblack
;;
populate_streams)
runweb python manage.py populate_streams
;;
generate_preview_images)
runweb python manage.py generate_preview_images $@
;;
runweb)
runweb "$@"
;;
rundb)
rundb "$@"
;;
*)
set +x # No need to echo echo
echo "Unrecognised command. Try: build, clean, up, initdb, resetdb, makemigrations, migrate, bash, shell, dbshell, restart_celery, test, pytest, test_report, black, populate_streams, generate_preview_images"
;;
esac