diff --git a/script/mirror_db.sh b/script/mirror_db.sh index 88e4684306..ede932c821 100755 --- a/script/mirror_db.sh +++ b/script/mirror_db.sh @@ -4,45 +4,48 @@ # Useful for when you want to test a migration against production data, or see # the effect of codebase changes on real-life data -# Usage: script/mirror_db.sh [ofn-staging1|ofn-staging2|ofn-prod] - set -e +HOST="$1" +BUCKET="$2" +: ${DB_USER='ofn_user'} +: ${DB_DATABASE='openfoodnetwork'} + +DB_OPTIONS=( +--exclude-table-data=sessions +--exclude-table-data=spree_log_entries +--exclude-table-data=spree_state_changes +--no-acl +) + +if [ -z "$HOST" ]; then + echo "[Error] SSH host missing. +Usage: $0 openfoodnetwork@openfoodnetwork.org.au" >&2 + exit 1 +fi + if hash zeus 2>/dev/null && [ -e .zeus.sock ]; then RAILS_RUN='zeus r' else RAILS_RUN='bundle exec rails runner' fi -if [[ $1 != 'ofn-no' ]]; then - DB_USER='openfoodweb' - DB_DATABASE='openfoodweb_production' -else - DB_USER='ofn_user' - DB_DATABASE='openfoodnetwork' -fi - -DB_OPTIONS='--exclude-table-data=sessions' - # -- Mirror database echo "Mirroring database..." -echo "drop database open_food_network_dev" | psql -h localhost -U ofn open_food_network_test -echo "create database open_food_network_dev" | psql -h localhost -U ofn open_food_network_test -ssh $1 "pg_dump -h localhost -U $DB_USER $DB_DATABASE $DB_OPTIONS |gzip" |gunzip |psql -h localhost -U ofn open_food_network_dev - +dropdb -h localhost -U ofn open_food_network_dev +createdb -h localhost -U ofn open_food_network_dev +ssh -C "$HOST" "pg_dump -h localhost -U $DB_USER $DB_DATABASE ${DB_OPTIONS[@]}" | psql -h localhost -U ofn open_food_network_dev # -- Disable S3 echo "Preparing mirrored database..." $RAILS_RUN script/prepare_imported_db.rb - # -- Mirror images -if hash aws 2>/dev/null; then +if [ -n "$BUCKET" ] && hash aws 2>/dev/null; then echo "Mirroring images..." - BUCKET=`echo $1 | sed s/-/_/ | sed "s/\\([0-9]\\)/_\1/" | sed s/prod/production/` - aws s3 sync s3://$BUCKET/public public/ + aws s3 sync "s3://$BUCKET/public public/" else - echo "Please install the AWS CLI tools so that I can copy the images from $1 for you." + echo "Please install the AWS CLI tools so that I can copy the images from $BUCKET for you." echo "eg. sudo easy_install awscli" fi