forked from mirrors/bookwyrm
8eb340945b
This is useful if the copy gets aborted, or to sync over remnants generated between the copy and the switchover to S3
197 lines
5.3 KiB
Bash
Executable file
197 lines
5.3 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
|
|
}
|
|
|
|
function awscommand {
|
|
# expose env vars
|
|
export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
|
|
export AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
|
|
export AWS_DEFAULT_REGION=${AWS_S3_REGION_NAME}
|
|
# first arg is mountpoint, second is the whole aws command
|
|
docker run --rm -it -v $1\
|
|
-e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_DEFAULT_REGION\
|
|
amazon/aws-cli $2
|
|
}
|
|
|
|
CMD=$1
|
|
if [ -n "$CMD" ]; then
|
|
shift
|
|
fi
|
|
|
|
# show commands as they're executed
|
|
set -x
|
|
|
|
case "$CMD" in
|
|
up)
|
|
docker-compose up --build "$@"
|
|
;;
|
|
service_ports_web)
|
|
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
|
|
;;
|
|
pytest)
|
|
execweb pytest --no-cov-on-fail "$@"
|
|
;;
|
|
collectstatic)
|
|
runweb python manage.py collectstatic --no-input
|
|
;;
|
|
makemessages)
|
|
runweb django-admin makemessages --no-wrap --ignore=venv -l en_US $@
|
|
;;
|
|
compilemessages)
|
|
runweb django-admin compilemessages --ignore venv $@
|
|
;;
|
|
update_locales)
|
|
git fetch origin l10n_main:l10n_main
|
|
git checkout l10n_main locale/de_DE
|
|
git checkout l10n_main locale/es_ES
|
|
git checkout l10n_main locale/fr_FR
|
|
git checkout l10n_main locale/gl_ES
|
|
git checkout l10n_main locale/lt_LT
|
|
git checkout l10n_main locale/pt_BR
|
|
git checkout l10n_main locale/zh_Hans
|
|
git checkout l10n_main locale/zh_Hant
|
|
runweb django-admin makemessages --no-wrap --ignore=venv -l en_US $@
|
|
runweb django-admin compilemessages --ignore venv
|
|
;;
|
|
build)
|
|
docker-compose build
|
|
;;
|
|
clean)
|
|
clean
|
|
;;
|
|
black)
|
|
makeitblack
|
|
;;
|
|
populate_streams)
|
|
runweb python manage.py populate_streams $@
|
|
;;
|
|
populate_suggestions)
|
|
runweb python manage.py populate_suggestions
|
|
;;
|
|
generate_thumbnails)
|
|
runweb python manage.py generateimages
|
|
;;
|
|
generate_preview_images)
|
|
runweb python manage.py generate_preview_images $@
|
|
;;
|
|
copy_media_to_s3)
|
|
awscommand "bookwyrm_media_volume:/images"\
|
|
"s3 cp /images s3://${AWS_STORAGE_BUCKET_NAME}/images\
|
|
--endpoint-url ${AWS_S3_ENDPOINT_URL}\
|
|
--recursive --acl public-read" "$@"
|
|
;;
|
|
sync_media_to_s3)
|
|
awscommand "bookwyrm_media_volume:/images"\
|
|
"s3 sync /images s3://${AWS_STORAGE_BUCKET_NAME}/images\
|
|
--endpoint-url ${AWS_S3_ENDPOINT_URL}\
|
|
--acl public-read" "$@"
|
|
;;
|
|
set_cors_to_s3)
|
|
awscommand "$(pwd):/bw"\
|
|
"s3api put-bucket-cors\
|
|
--bucket ${AWS_STORAGE_BUCKET_NAME}\
|
|
--endpoint-url ${AWS_S3_ENDPOINT_URL}\
|
|
--cors-configuration file:///bw/$@"
|
|
;;
|
|
runweb)
|
|
runweb "$@"
|
|
;;
|
|
*)
|
|
set +x # No need to echo echo
|
|
echo "Unrecognised command. Try:"
|
|
echo " up [container]"
|
|
echo " service_ports_web"
|
|
echo " initdb"
|
|
echo " resetdb"
|
|
echo " makemigrations [migration]"
|
|
echo " migrate [migration]"
|
|
echo " bash"
|
|
echo " shell"
|
|
echo " dbshell"
|
|
echo " restart_celery"
|
|
echo " pytest [path]"
|
|
echo " collectstatic"
|
|
echo " makemessages"
|
|
echo " compilemessages [locale]"
|
|
echo " update_locales"
|
|
echo " build"
|
|
echo " clean"
|
|
echo " black"
|
|
echo " populate_streams [--stream=<stream name>]"
|
|
echo " populate_suggestions"
|
|
echo " generate_thumbnails"
|
|
echo " generate_preview_images [--all]"
|
|
echo " copy_media_to_s3"
|
|
echo " sync_media_to_s3"
|
|
echo " set_cors_to_s3 [cors file]"
|
|
echo " runweb [command]"
|
|
;;
|
|
esac
|