forked from mirrors/bookwyrm
b4c6587972
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.
128 lines
2.9 KiB
Bash
Executable file
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
|