Files @ a00195c8f6d0
Branch filter:

Location: website/cron/scripts/website-update.sh

brett
static.views: Deduplicate code.

The primary goal here is to get templates rendered more like our "regular"
templates, by using more of the standard tools to do so rather than roll our
own.

* Use TemplateResponse. This requires less boilerplate and ensures the
rendering runs through our local context processors.
* Use the existing definition of fundgoal_lookup.
#!/bin/sh

set -e
set -u

LOCKDIR="/tmp/website-update.$(id -u)"
SITEDIR=~/website
PRODUCTION_BRANCH=master
DB_FILE=~/Database/conservancy-website.sqlite3
DB_SCRIPT=~bkuhn/django-supporters-list.sql

git_rev_name() {
    git rev-parse --abbrev-ref --symbolic-full-name "$@"
}

if ! mkdir "$LOCKDIR"; then
    test -d "$LOCKDIR"
    exit $?
fi
trap 'rmdir "$LOCKDIR"' 0 INT TERM QUIT

exitcode=0
if [ "$DB_SCRIPT" -nt "$DB_FILE" ]; then
    sqlite3 -bail -cmd ".timeout 30000" "$DB_FILE" <"$DB_SCRIPT" || exitcode=$?
fi

# If the checkout is not on the production branch,
# assume maintenance is happening and stop.
cd "$SITEDIR"
if [ "$(git_rev_name HEAD)" != "$PRODUCTION_BRANCH" ]; then
    exit "$exitcode"
fi

# Abort if the production branch isn't tracking a remote branch.
if ! git_upstream="$(git_rev_name '@{upstream}' 2>/dev/null)"; then
    exit 3
fi

IFS=/ read git_remote git_refspec <<EOF
$git_upstream
EOF
git fetch --quiet --no-tags "$git_remote" "$git_refspec"
if [ "$(git rev-parse "$PRODUCTION_BRANCH")" = "$(git rev-parse "$git_upstream")" ]; then
    exit "$exitcode"
fi

git merge --quiet --ff-only "$git_remote" "$git_refspec"
python2 -m compileall -q -x - www || exitcode=$?
chgrp -R www-data www || exitcode=$?
chmod -R g+rX-w,o+X-w www || exitcode=$?
chmod -R o+r www/conservancy/static || exitcode=$?
exit "$exitcode"