#!/bin/bash -eu
#
# blame(ken)
#

# include admin.production.netfoundry.io, exclude admin.netfoundry.io
MATCHSTR='^admin\\.((sandbox|integration|staging|trial|private|production)\\.)netfoundry\\.io'
BASENAME=$(basename $0)

_usage(){
  echo -e "INFO: usage $BASENAME [-p AWS_PROFILE]"
  exit
}

while getopts :p: OPT; do
  case $OPT in
    p) AWS_PROFILE=$OPTOARG ;;
    *|\?) _usage ;;
  esac
done
shift $((OPTIND-1))

if [[ ! -z ${AWS_PROFILE:+true} ]]; then
  AWS_EXEC="aws --profile $AWS_PROFILE"
else
  AWS_EXEC="aws"
fi

echo "INFO: Invalidating cache for CloudFront distribution with origin matching '$MATCHSTR' "

DISTRIBUTION=$(
  eval $AWS_EXEC cloudfront list-distributions | \
    jq -r ".DistributionList.Items[]|select(.Aliases.Items[0]|match(\"$MATCHSTR\"))|.Id"
)

INVALIDATION=$(
  eval $AWS_EXEC cloudfront create-invalidation \
    --distribution-id $DISTRIBUTION \
    --paths \"/*\" | \
      jq -r .Invalidation.Id
)

eval $AWS_EXEC cloudfront wait invalidation-completed \
  --distribution-id $DISTRIBUTION \
  --id $INVALIDATION
