2020-03-30 19:15:36 +01:00
|
|
|
#!/bin/bash
|
|
|
|
|
2020-11-19 17:44:46 -08:00
|
|
|
# exit on errors
|
2020-03-30 19:15:36 +01:00
|
|
|
set -e
|
2020-11-19 17:44:46 -08:00
|
|
|
|
2020-11-19 13:50:59 -08:00
|
|
|
# import our ENV variables
|
2020-11-19 17:44:46 -08:00
|
|
|
# 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
|
2020-11-19 13:50:59 -08:00
|
|
|
source .env
|
2020-11-19 17:44:46 -08:00
|
|
|
trap - EXIT
|
2020-11-19 13:50:59 -08:00
|
|
|
|
2020-11-19 17:44:46 -08:00
|
|
|
# show commands as they're executed
|
2020-03-30 19:15:36 +01:00
|
|
|
set -x
|
2020-11-19 13:50:59 -08:00
|
|
|
function runweb {
|
|
|
|
docker-compose run --rm web "$@"
|
|
|
|
}
|
2020-03-30 19:15:36 +01:00
|
|
|
|
2020-11-08 17:30:47 -08:00
|
|
|
function execdb {
|
|
|
|
docker-compose exec db $@
|
|
|
|
}
|
|
|
|
|
|
|
|
function execweb {
|
|
|
|
docker-compose exec web "$@"
|
|
|
|
}
|
|
|
|
|
2020-11-08 11:50:20 -08:00
|
|
|
function initdb {
|
2020-11-08 17:30:47 -08:00
|
|
|
execweb python manage.py migrate
|
2022-01-10 13:05:08 -08:00
|
|
|
execweb python manage.py initdb "$@"
|
2020-11-08 11:50:20 -08:00
|
|
|
}
|
|
|
|
|
2021-06-08 18:19:52 +02:00
|
|
|
function awscommand {
|
|
|
|
# expose env vars
|
2021-06-07 21:40:37 +02:00
|
|
|
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}
|
2021-06-08 18:19:52 +02:00
|
|
|
# first arg is mountpoint, second is the whole aws command
|
|
|
|
docker run --rm -it -v $1\
|
2021-06-07 21:40:37 +02:00
|
|
|
-e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_DEFAULT_REGION\
|
2021-06-08 18:19:52 +02:00
|
|
|
amazon/aws-cli $2
|
2021-06-07 23:20:27 +02:00
|
|
|
}
|
|
|
|
|
2020-11-27 16:07:53 -08:00
|
|
|
CMD=$1
|
2021-07-05 13:14:35 -07:00
|
|
|
if [ -n "$CMD" ]; then
|
|
|
|
shift
|
|
|
|
fi
|
2020-11-27 17:39:15 -08:00
|
|
|
|
|
|
|
# show commands as they're executed
|
|
|
|
set -x
|
|
|
|
|
2020-11-27 16:07:53 -08:00
|
|
|
case "$CMD" in
|
2020-04-03 09:32:02 -07:00
|
|
|
up)
|
2021-01-13 23:02:56 -08:00
|
|
|
docker-compose up --build "$@"
|
2020-04-03 09:32:02 -07:00
|
|
|
;;
|
|
|
|
initdb)
|
2022-01-10 13:05:08 -08:00
|
|
|
initdb "$@"
|
2020-04-03 09:32:02 -07:00
|
|
|
;;
|
|
|
|
migrate)
|
2021-04-07 09:02:39 -07:00
|
|
|
runweb python manage.py migrate "$@"
|
2020-04-03 09:32:02 -07:00
|
|
|
;;
|
2020-11-08 12:14:57 -08:00
|
|
|
bash)
|
2021-04-07 09:02:39 -07:00
|
|
|
runweb bash
|
2020-04-03 09:32:02 -07:00
|
|
|
;;
|
|
|
|
shell)
|
2021-04-07 09:02:39 -07:00
|
|
|
runweb python manage.py shell
|
2020-04-03 09:32:02 -07:00
|
|
|
;;
|
|
|
|
dbshell)
|
2020-11-19 13:50:59 -08:00
|
|
|
execdb psql -U ${POSTGRES_USER} ${POSTGRES_DB}
|
2020-04-03 09:32:02 -07:00
|
|
|
;;
|
2020-04-20 17:10:44 +01:00
|
|
|
restart_celery)
|
|
|
|
docker-compose restart celery_worker
|
|
|
|
;;
|
2020-09-28 14:47:53 -07:00
|
|
|
collectstatic)
|
2021-04-07 09:02:39 -07:00
|
|
|
runweb python manage.py collectstatic --no-input
|
2020-09-28 14:47:53 -07:00
|
|
|
;;
|
2020-11-08 10:29:33 -08:00
|
|
|
build)
|
|
|
|
docker-compose build
|
2020-09-28 14:47:53 -07:00
|
|
|
;;
|
2020-11-05 11:47:40 -08:00
|
|
|
update)
|
|
|
|
git pull
|
2022-01-10 23:22:12 -08:00
|
|
|
docker-compose build
|
2022-01-10 00:04:51 -08:00
|
|
|
runweb python manage.py migrate
|
|
|
|
runweb python manage.py collectstatic --no-input
|
|
|
|
docker-compose up -d
|
2020-11-05 11:47:40 -08:00
|
|
|
;;
|
2021-04-02 11:20:56 -07:00
|
|
|
populate_streams)
|
2021-12-16 08:48:34 +00:00
|
|
|
runweb python manage.py populate_streams "$@"
|
2021-03-28 11:46:07 -07:00
|
|
|
;;
|
2021-11-16 10:41:08 -08:00
|
|
|
populate_lists_streams)
|
|
|
|
runweb python manage.py populate_lists_streams $@
|
|
|
|
;;
|
2021-05-22 16:10:11 -07:00
|
|
|
populate_suggestions)
|
|
|
|
runweb python manage.py populate_suggestions
|
|
|
|
;;
|
2021-08-02 22:40:19 +02:00
|
|
|
generate_thumbnails)
|
2021-05-24 16:14:51 +02:00
|
|
|
runweb python manage.py generateimages
|
|
|
|
;;
|
2021-05-26 13:52:10 +02:00
|
|
|
generate_preview_images)
|
2021-12-16 08:48:34 +00:00
|
|
|
runweb python manage.py generate_preview_images "$@"
|
2021-05-26 13:52:10 +02:00
|
|
|
;;
|
2021-06-07 21:40:37 +02:00
|
|
|
copy_media_to_s3)
|
2021-06-08 18:19:52 +02:00
|
|
|
awscommand "bookwyrm_media_volume:/images"\
|
|
|
|
"s3 cp /images s3://${AWS_STORAGE_BUCKET_NAME}/images\
|
|
|
|
--endpoint-url ${AWS_S3_ENDPOINT_URL}\
|
2021-12-16 08:47:03 +00:00
|
|
|
--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" "$@"
|
2021-06-07 21:40:37 +02:00
|
|
|
;;
|
2021-06-07 23:20:27 +02:00
|
|
|
set_cors_to_s3)
|
2021-12-16 23:44:47 -08:00
|
|
|
set +x
|
2021-12-16 08:48:34 +00:00
|
|
|
config_file=$1
|
|
|
|
if [ -z "$config_file" ]; then
|
|
|
|
echo "This command requires a JSON file containing a CORS configuration as an argument"
|
|
|
|
exit 1
|
|
|
|
fi
|
2021-12-16 23:44:47 -08:00
|
|
|
set -x
|
2021-06-08 18:19:52 +02:00
|
|
|
awscommand "$(pwd):/bw"\
|
|
|
|
"s3api put-bucket-cors\
|
|
|
|
--bucket ${AWS_STORAGE_BUCKET_NAME}\
|
|
|
|
--endpoint-url ${AWS_S3_ENDPOINT_URL}\
|
2021-12-16 08:48:34 +00:00
|
|
|
--cors-configuration file:///bw/$config_file" "$@"
|
2021-06-07 23:20:27 +02:00
|
|
|
;;
|
2021-07-05 13:14:35 -07:00
|
|
|
runweb)
|
|
|
|
runweb "$@"
|
|
|
|
;;
|
2020-04-03 09:32:02 -07:00
|
|
|
*)
|
2021-07-05 13:14:35 -07:00
|
|
|
set +x # No need to echo echo
|
2021-06-19 17:18:13 +02:00
|
|
|
echo "Unrecognised command. Try:"
|
2021-08-01 11:38:32 +02:00
|
|
|
echo " up [container]"
|
2021-06-19 11:53:05 +02:00
|
|
|
echo " initdb"
|
2021-08-01 11:38:32 +02:00
|
|
|
echo " makemigrations [migration]"
|
|
|
|
echo " migrate [migration]"
|
2021-06-19 11:53:05 +02:00
|
|
|
echo " bash"
|
|
|
|
echo " shell"
|
|
|
|
echo " dbshell"
|
|
|
|
echo " restart_celery"
|
2021-08-01 11:38:32 +02:00
|
|
|
echo " collectstatic"
|
|
|
|
echo " build"
|
|
|
|
echo " clean"
|
2021-08-07 17:38:07 -07:00
|
|
|
echo " populate_streams [--stream=<stream name>]"
|
2021-08-02 17:55:30 -07:00
|
|
|
echo " populate_suggestions"
|
2021-08-02 22:40:19 +02:00
|
|
|
echo " generate_thumbnails"
|
2021-08-01 11:38:32 +02:00
|
|
|
echo " generate_preview_images [--all]"
|
2021-06-19 11:53:05 +02:00
|
|
|
echo " copy_media_to_s3"
|
2021-12-16 08:47:03 +00:00
|
|
|
echo " sync_media_to_s3"
|
2021-08-01 11:38:32 +02:00
|
|
|
echo " set_cors_to_s3 [cors file]"
|
|
|
|
echo " runweb [command]"
|
2020-04-03 09:32:02 -07:00
|
|
|
;;
|
2020-03-30 19:15:36 +01:00
|
|
|
esac
|