#!/bin/sh
set -e

. /usr/share/debconf/confmodule

readonly DOKKU_ROOT="${DOKKU_ROOT:-/home/dokku}"

case "$1" in
  abort-upgrade|abort-remove|abort-deconfigure)
    ;;

  configure)
    mandb
    [ ! -x /usr/bin/docker.io ] || ln -sf /usr/bin/docker.io /usr/local/bin/docker
    modprobe aufs || echo "WARNING: Restart server to finish installing dokku!"
    sshcommand create dokku /usr/local/bin/dokku
    egrep -i "^docker" /etc/group || groupadd docker
    usermod -aG docker dokku

    # setup plugin directories
    # should be replaced by `plugn init`
    mkdir -p /var/lib/dokku/core-plugins/available /var/lib/dokku/plugins/available
    mkdir -p /var/lib/dokku/core-plugins/enabled /var/lib/dokku/plugins/enabled
    touch /var/lib/dokku/core-plugins/config.toml /var/lib/dokku/plugins/config.toml

    # migrate old plugins
    find /var/lib/dokku/plugins/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read -r plugin; do
      if [ "$plugin" = "available" ] || [ "$plugin" = "enabled" ]; then
        continue
      elif [ -f /var/lib/dokku/plugins/$plugin/.core ]; then
        rm -rf /var/lib/dokku/plugins/$plugin
      elif [ ! -d /var/lib/dokku/plugins/available/$plugin ]; then
        mv /var/lib/dokku/plugins/$plugin /var/lib/dokku/plugins/available;
      fi
    done

    # enable all core plugins
    find /var/lib/dokku/core-plugins/available -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read -r plugin; do
      if [ ! -d /var/lib/dokku/plugins/available/$plugin ]; then
        ln -s /var/lib/dokku/core-plugins/available/$plugin /var/lib/dokku/plugins/available/$plugin;
        PLUGIN_PATH=/var/lib/dokku/core-plugins plugn enable $plugin
        PLUGIN_PATH=/var/lib/dokku/plugins plugn enable $plugin
      fi
    done
    chown dokku:dokku -R /var/lib/dokku/plugins /var/lib/dokku/core-plugins

    dokku plugin:install --core

    rm -f ${DOKKU_ROOT}/VERSION
    cp /var/lib/dokku/STABLE_VERSION ${DOKKU_ROOT}/VERSION

    if [ -f /etc/init/dokku-installer.conf ] && service dokku-installer status 2> /dev/null | grep waiting; then
        sudo service dokku-installer start
    fi

    db_get "dokku/web_config"
    if [ "$RET" = "true" ]; then
      exit 0
    fi

    db_get "dokku/vhost_enable"
    if [ "$RET" = "true" ]; then
        db_get "dokku/hostname"
        echo "$RET" > "${DOKKU_ROOT}/VHOST"
    else
        rm -f "${DOKKU_ROOT}/VHOST"
    fi

    db_get "dokku/hostname"
    echo "$RET" > "${DOKKU_ROOT}/HOSTNAME"

    if [ -z "${DEBCONF_RECONFIGURE}" ]; then
      db_get "dokku/key_file"
      if [ -f "$RET" ]; then
        sshcommand acl-add dokku default < "$RET"
      fi
    fi
    ;;

  *)
    echo "postinst called with unknown argument \`$1'" >&2
    exit 1
    ;;
esac

exit 0
