60 lines
1.3 KiB
Bash
Executable File
60 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
USAGE="sync-s3-uploads.sh <source env> <target env>"
|
|
|
|
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
|