website/cron/scripts/website-update.sh
Brett Smith 985ce2fb6c cron: Exclude what are obviously scripts from compilation.
The impetus here is to stop the script from trying to compile and
complaining about
<www/conservancy/static/projects/policies/publish-travel-policy.py>, which
is a script written in Python 3 meant to help with repository maintenance.

Excluding files with `-` in the name seems reasonable since they can't be
modules anyway, so there's no reason to compile them.

This will start failing if we add a similar script later that doesn't have a
`-` in its name.
2017-09-26 13:57:42 -04:00

52 lines
1.3 KiB
Bash
Executable file

#!/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 "$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"