#!/bin/bash set -e . /etc/conf.d/parabolaweb . /usr/bin/libremessages find_makefiles() { pushd "$WEBDIR" > /dev/null echo ./sitestatic find . -name static -type d | while read dir; do if [[ -e "$WEBDIR/$dir/Makefile" ]]; then printf '%s\n' "$dir" fi done } clean() { cd "$WEBDIR" msg "Purging old .pyc files..." find . -name '*.pyc' -delete msg "Purging old GNU Make generated files..." for dir in `find_makefiles`; do make -C "$WEBDIR/$dir" clean done } configure() { cd "$WEBDIR" msg "Checking configuration..." if [[ ! -f local_settings.py ]]; then msg2 "Configuration file missing, opening editor..." cp local_settings.py.example local_settings.tmp.$$.py if "$EDITOR" local_settings.tmp.$$.py; then mv local_settings.tmp.$$.py local_settings.py else rm local_settings.tmp.$$.py msg "Failed to configure, exiting" exit 1 fi msg2 "Creating database..." ./manage.py syncdb else msg2 "Current configuration checks out" fi } update-database() { cd "$WEBDIR" msg "Updating database..." msg2 "Running migrations..." ./manage.py migrate if [[ -f devel/management/commands/update_types_permissions.py ]]; then msg2 "Updating permissions..." ./manage.py update_types_permissions fi msg2 "Loading fixtures..." ./manage.py loaddata */fixtures/*.json } update-filesystem() { msg "Updating filesystem..." for dir in `find_makefiles`; do msg2 "Updating $dir with GNU Make..." make -C "$WEBDIR/$dir" done cd "$WEBDIR" msg2 "Collecting static files..." echo yes | ./manage.py collectstatic -l } main() { if [[ -z "$EDITOR" ]]; then error 'Please set the $EDITOR variable' exit 1 fi if [[ -d "$WEBDIR" ]]; then clean fi parabolaweb-download configure update-database update-filesystem } main "$@"