123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #! /bin/sh
- # vim:sw=4 ts=4 et:
- BUCKET=releases.wagtail.io
- REGION=eu-west-1
- CF_DISTRIBUTION=E283SZ5CB4MDM0
- # Find the location of the AWS CLI binary. MacPorts sometimes put it in a
- # weird place, so to be helpful we check those locations as well.
- if [ -z "${AWS_CLI}" ]; then
- for d in $(echo "${PATH}" | tr ':' ' ') \
- /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin \
- /opt/local/Library/Frameworks/Python.framework/Versions/3.4/bin \
- ; do
- if [ -x "${d}/aws" ]; then
- AWS_CLI="${d}/aws"
- break
- fi
- done
- if [ -z "${AWS_CLI}" ]; then
- printf >&2 -- '%s: cannot find AWS CLI binary "aws"\n' "$0"
- printf >&2 -- '%s: please install AWS from https://aws.amazon.com/documentation/cli/\n' "$0"
- exit 1
- fi
- fi
- # CloudFront support in the CLI is still in beta.
- $AWS_CLI configure set preview.cloudfront true
- _usage() {
- printf >&2 -- 'usage: %s get [output-filename]\n' "$0"
- printf >&2 -- ' %s put [input-filename]\n' "$0"
- printf >&2 -- ' %s <vi|edit>\n' "$0"
- }
- if [ "$#" -lt 1 ]; then
- _usage
- exit 1
- fi
- _get() {
- if ! $AWS_CLI s3 cp --region "${REGION}" "s3://${BUCKET}/latest.txt" "$1"; then
- printf >&2 -- "%s: failed to download latest.txt; see above messages\\n" "$0"
- exit 1
- fi
- }
- _put() {
- if ! $AWS_CLI s3 cp --acl public-read --region "${REGION}" "$1" "s3://${BUCKET}/latest.txt"; then
- printf >&2 -- "%s: failed to upload latest.txt; see above messages\\n" "$0"
- exit 1
- fi
- $AWS_CLI >/dev/null cloudfront create-invalidation \
- --distribution-id "$CF_DISTRIBUTION" \
- --invalidation-batch \
- '{
- "Paths": {
- "Items": [
- "/latest.txt"
- ],
- "Quantity": 1
- },
- "CallerReference": "latest.sh"
- }'
- }
- if [ "$1" = "get" ]; then
- if [ "$#" -lt 2 ]; then
- _usage
- exit 1
- fi
- shift
- if [ -e "$2" ]; then
- printf >&2 -- "%s: \"%s\": already exists, won't overwrite\\n" "$0"
- exit 1
- fi
- _get "$@"
- elif [ "$1" = "put" ]; then
- if [ "$#" -lt 2 ]; then
- _usage
- exit 1
- fi
- shift
- _put "$@"
- elif [ "$1" = "edit" -o "$1" = "vi" ]; then
- LTMP=$(mktemp "${TMPDIR:-/tmp}/latest.XXXXXX")
- if [ "$?" -ne 0 ]; then
- printf >&2 -- '%s: cannot create temporary file\n' "$0"
- exit 1
- fi
- trap 'rm -f "${LTMP}"' 0 TERM INT
- LTMP2=$(mktemp "${TMPDIR:-/tmp}/latest.XXXXXX")
- if [ "$?" -ne 0 ]; then
- printf >&2 -- '%s: cannot create temporary file\n' "$0"
- exit 1
- fi
- trap 'rm -f "${LTMP2}"' 0 TERM INT
- if ! _get "${LTMP}"; then
- exit 1
- fi
-
- cp "${LTMP}" "${LTMP2}"
- if [ ! -z "${VISUAL}" ]; then
- editor="${VISUAL}"
- elif [ ! -z "${EDITOR}" ]; then
- editor="${EDITOR}"
- else
- editor='vi'
- fi
- $editor "${LTMP}"
- if cmp "${LTMP}" "${LTMP2}" >/dev/null; then
- printf >&2 -- '%s: no changes; exiting\n' "$0"
- exit
- fi
- diff -u "${LTMP2}" "${LTMP}"
- _put "${LTMP}"
- fi
|