#!/bin/bash set -e #set -x cecho() { local code="\033[" case "$1" in black | bk) color="${code}0;30m";; red | r) color="${code}1;31m";; green | g) color="${code}1;32m";; yellow | y) color="${code}1;33m";; blue | b) color="${code}1;34m";; purple | p) color="${code}1;35m";; cyan | c) color="${code}1;36m";; gray | gr) color="${code}0;37m";; *) local text="$1" esac [ -z "$text" ] && local text="$color$2${code}0m" echo -e "$text" } DATA_DIR=/srv/ishtar CONFIG_PATH=/etc/ishtar INSTANCES_FILE=$CONFIG_PATH/instances case "$1" in configure) mkdir -p $CONFIG_PATH 2> /dev/null if [ ! -f $CONFIG_PATH/config ]; then cp /usr/share/python3-django-ishtar/install/config.template $CONFIG_PATH/config ; fi source $CONFIG_PATH/config export LANG=$ISHTAR_LOCALE.UTF-8 if [ "$(locale 2>&1 >/dev/null|wc -l)" != 0 ]; then cecho r "Unable to set LANG=$LANG properly" cecho y "Try: 'dpkg-reconfigure locales' or install the 'locales-all' package." cecho y "If you want to use another locale, modify /etc/ishtar/config properly." exit 1 fi instances="$( (cat $INSTANCES_FILE 2>/dev/null || true) | xargs )" if [ -n "$instances" ]; then if [ -f /usr/sbin/rabbitmqctl ]; then # assume queues are configured cecho c "Verify rabbitmq queues are empty" for instance in $instances; do for res in `/usr/sbin/rabbitmqctl list_queues -p /ishtar$instance -q messages`; do if [ $res != 0 ] && [ $res != 'messages' ]; then cecho r "The queue for $instance is not empty ($res messages)." cecho y "Wait a few minutes (hours?) for update." exit 1 fi; done done fi messages_compiled=""; for instance in $instances; do if [ ! $messages_compiled ]; then cecho c "Compile i18n messages" (cd $DATA_DIR; python3 $DATA_DIR/$instance/manage.py compilemessages); messages_compiled="ok"; cecho c "Updating instances found in $INSTANCES_FILE: $instances" fi # The upgrade procedure below was built from the "update" # target and its dependencies in the upstream Makefile: cecho c "* Updating $instance" cd $DATA_DIR/$instance # migrate python3 manage.py migrate # "collectstatic" python3 manage.py collectstatic --noinput cecho g "Updating $instance: OK" done cecho g "Updating all instances: OK" # the assumption is that nginx and uwsgi were configured # through ishtar-prepare-instance, so let's restart them # unconditionally: cecho c "Restarting uwsgi and nginx" invoke-rc.d uwsgi restart invoke-rc.d nginx restart cecho g "Restarting uwsgi and nginx: OK" SUPERVISOR=/usr/bin/supervisorctl if [ -f "$SUPERVISOR" ]; then cecho c "Restarting supervisor service" $SUPERVISOR restart all cecho g "Restarting supervisor service: OK" fi else cecho g "Found no instances to update in $INSTANCES_FILE" cecho y "To create a new instance:" cecho y " ishtar-prepare-instance" fi ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac #DEBHELPER#