#!/bin/bash # Before first use: # Install awscli (pip install awscli) # Configure access credentials (aws configure), region is "eu-central-1" # Usage: # ./s3sync.sh DESTINATION SOURCE [clear] # @DESTINATION: required, destination server # @SOURCE: required, build # @CLEAR: optional, delete previous uploads # ./s3sync.sh stage beta # ./s3sync.sh stage stable # ./s3sync.sh stage stable clear # ./s3sync.sh beta beta # ./s3sync.sh stable stable function confirm { read -r -p "Are you sure? [y/N] " response if [[ $response =~ ^(yes|y)$ ]]; then echo "let's go!" else exit 2 fi } # Validate params if [ "x$1" == "x" ] || [ "x$2" == "x" ]; then echo "Invalid params" echo "./s3sync.sh stage|beta|stable beta|stable [clear]" exit 1 fi # Validate destination param if [ "x$1" != "xstage" ] && [ "x$1" != "xbeta" ] && [ "x$1" != "xstable" ]; then echo "Invalid destination: "$1 echo "use: stage|beta|stable" exit 1 fi # Validate source param if [ "x$2" != "xbeta" ] && [ "x$2" != "xstable" ]; then echo "Invalid source: "$2 echo "use: beta|stable" exit 1 fi # Set source directory if [ "x$2" == "xbeta" ]; then SOURCE=../build/beta elif [ "x$2" == "xstable" ]; then SOURCE=../build/stable fi # Set destination if [ "x$1" == "xstage" ]; then BUCKET=stage.mytrezor.com DISTRIBUTION_ID="E24M0QWO692FQL" elif [ "x$1" == "xbeta" ]; then BUCKET=beta.mytrezor.com DISTRIBUTION_ID="E1PONNHWUNCQ9M" elif [ "x$2" == "xstable" ]; then BUCKET=wallet.mytrezor.com DISTRIBUTION_ID="EZM01GFTITGVD" fi echo "sync "$SOURCE" with "$BUCKET"/next" if [ "x$1" == "xbeta" ] || [ "x$1" == "xstable" ]; then confirm fi set -e cd `dirname $0` if [ "x$3" == "x-clear" ]; then aws s3 sync --delete --cache-control 'public, max-age=3600' $SOURCE s3://$BUCKET/next else aws s3 sync --cache-control 'public, max-age=3600' $SOURCE s3://$BUCKET/next fi aws cloudfront create-invalidation --distribution-id $DISTRIBUTION_ID --paths '/next/*' echo "DONE"