#!/bin/sh
# -*- Mode: sh; indent-tabs-mode: nil; tab-width: 4 -*-

sudo=
if ! [ -f ~/.snap/auth.json ]; then
    sudo=sudo
fi

echo_cmd() {
    tput bold
    echo "$@"
    tput sgr0
    $@
}

install_snap() {
    rev=$(snap list $1 2>/dev/null | grep "^$1 " | tr -s ' ' | cut -d' ' -f3)

    # No version installed yet
    if [ -z "$rev" ]; then
        echo_cmd $sudo snap install $@

    # Local version installed
    elif expr + "$rev" : 'x.*' >/dev/null; then
        while true; do
            read -p "Remove local snap of $1 in favor of store version? [Yn] " yn
            case ${yn:-y} in
                [Yy]* ) echo_cmd $sudo snap remove $1
                        echo_cmd $sudo snap install $@
                        break;;
                [Nn]* ) return;;
                * ) echo "Please answer yes or no.";;
            esac
        done

    # Store version installed
    else
        # This refresh will usually fail due to no new version, but that's fine.
        echo_cmd $sudo snap refresh $@
    fi
}

install_app() {
    install_snap $@ || return

    # These should be auto-connected, but snapd only does so if you install
    # things in the right order.  In case some existing snaps didn't get the
    # chance to connect the first time (or the user disconnected them?), let's
    # do it manually again.

    $sudo snap connect $1:platform ubuntu-app-platform:platform 2>/dev/null
    $sudo snap connect $1:mir-libs mir-libs:mir-libs 2>/dev/null
    $sudo snap connect $1:mir unity8-session:mir 2>/dev/null
    $sudo snap connect $1:unity8 unity8-session:unity8 2>/dev/null
}

install_snap mir-libs --edge
install_snap ubuntu-app-platform --edge

install_snap unity8-session --edge --devmode
$sudo snap connect unity8-session:mir-libs mir-libs:mir-libs 2>/dev/null

install_app  address-book-app --edge --devmode
install_app  camera-app --edge --devmode
install_app  gallery-app --edge --devmode
install_app  ubuntu-calculator-app --edge --devmode
install_app  ubuntu-calendar-app --edge --devmode
install_app  ubuntu-clock-app --edge --devmode
install_app  ubuntu-filemanager-app --edge --devmode
install_app  ubuntu-terminal-app --edge --devmode
install_app  webbrowser-app --edge --devmode

exit 0
