summaryrefslogtreecommitdiff
path: root/libre/parabolaweb-utils/parabolaweb-update
diff options
context:
space:
mode:
Diffstat (limited to 'libre/parabolaweb-utils/parabolaweb-update')
-rw-r--r--libre/parabolaweb-utils/parabolaweb-update80
1 files changed, 80 insertions, 0 deletions
diff --git a/libre/parabolaweb-utils/parabolaweb-update b/libre/parabolaweb-utils/parabolaweb-update
new file mode 100644
index 000000000..45e17c4f2
--- /dev/null
+++ b/libre/parabolaweb-utils/parabolaweb-update
@@ -0,0 +1,80 @@
+#!/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() {
+ msg "Purging old .pyc files...."
+ cd "$WEBDIR"
+ find . -name '*.pyc' -delete
+ for dir in `find_makefiles`; do
+ make -C "$WEBDIR/$dir" clean
+ done
+}
+
+configure() {
+ msg "Checking configuration...."
+ cd "$WEBDIR"
+ 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() {
+ msg "Updating database...."
+ cd "$WEBDIR"
+ msg2 "Running migrations...."
+ ./manage.py migrate
+ 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
+
+ parabolaweb-download
+ clean
+ configure
+ clean
+ update-database
+ update-filesystem
+}
+
+main "$@"