#!/usr/bin/env bash set -e USAGE="sync-s3-uploads.sh " MY_PATH="`dirname \"$0\"`" UPLOADS_DIR="$(cd "$MY_PATH" && cd "../../web/app/uploads" && pwd)" AWS_ACCESS_KEY_ID=$(heroku config:get AWS_ACCESS_KEY_ID) export AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY=$(heroku config:get AWS_SECRET_ACCESS_KEY) export AWS_SECRET_ACCESS_KEY AWS_REGION=$(heroku config:get AWS_REGION) export AWS_REGION USE_CDN=$(heroku config:get USE_CDN) USE_CDN=${USE_CDN-false} BLOG_SLUG=$(heroku config:get BLOG_SLUG) BLOG_SLUG=${BLOG_SLUG-hvg-blog} if [[ $USE_CDN == true ]]; then FOLDER="$BLOG_SLUG/uploads" else FOLDER="uploads" fi # Check args if [ -z "$1" ] || [ -z "$2" ]; then echo $USAGE >&2; [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1; fi # Get bucket urls if [[ $1 == 'local' ]]; then SOURCE_URL=$UPLOADS_DIR else SOURCE_URL=s3://`heroku config:get BUCKET_NAME -r $1`/$FOLDER; fi; if [[ $2 == 'local' ]]; then TARGET_URL=$UPLOADS_DIR else TARGET_URL=s3://`heroku config:get BUCKET_NAME -r $2`/$FOLDER; fi; echo "You are about to copy all files from $SOURCE_URL to $TARGET_URL"; read -p "Are you sure you want to do this? (y/n) "; if [[ ! $REPLY =~ ^[Yy]$ ]]; then [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1; fi # Use aws-cli to synchronize buckets aws s3 sync $SOURCE_URL $TARGET_URL echo "Success!" exit 0