#!/bin/bash

function do_debian_stretch_setup {

    git config credential.helper store

    # FIXME assumes amd64
    export DEBIAN_FRONTEND=noninteractive

    export PACKAGES="
        byobu
        screen
        vim
        command-not-found
        dnsutils
        inetutils-ping
        man-db
        mosh
        nmap
        runit
        runit-systemd
        wget
    "

    sudo apt update
    sudo apt install -y $PACKAGES

    if ! which docker 2>&1 >/dev/null ;then
        sudo apt -y install \
            apt-transport-https \
            ca-certificates \
            curl \
            gnupg2 \
            software-properties-common
        curl -fsSL https://download.docker.com/linux/debian/gpg |
            sudo apt-key add -
        sudo add-apt-repository \
            "deb [arch=amd64] https://download.docker.com/linux/debian \
            $(lsb_release -cs) \
            stable"
        sudo apt update
        sudo apt install -y docker-ce docker-compose
    fi
}

function do_osx_setup {
    cc

    if [[ ! -d "$HOME/tmp" ]]; then
        mkdir "$HOME/tmp"
    fi

    if [[ ! -d "$HOME/tmp/osximage" ]]; then
        git clone https://github.com/sneak/osximage.git "$HOME/tmp/osximage.tmp" && \
        mv "$HOME/tmp/osximage.tmp" "$HOME/tmp/osximage"
    fi

    if [[ -d "$HOME/tmp/osximage" ]]; then
        cd "$HOME/tmp/osximage/custompkg/root/etc/skel"
        if [[ ! -d /etc/skel ]]; then
	    sudo rsync -avP ./ /etc/skel/
        fi
        if [[ -d /etc/skel ]]; then
	    rsync -avP /etc/skel/ "$HOME"
        fi
    fi

    for FN in $HOME/Library/user-setup/*.sh ; do
        echo "new-user-setup: starting $(basename $FN)..."
        bash "$FN" 2>&1 | tee -a $HOME/Library/Logs/user-setup.log
        rm "$FN"
        echo "new-user-setup: removed $(basename $FN)..."
    done
}

function do_setup {

    if [[ "$(lsb_release -c -s)" = "stretch" ]]; then
        do_debian_stretch_setup
    fi

    if [[ "$(uname)" = "Darwin" ]]; then
        if [[ ! -e "$HOME/Library/profile.d" ]]; then
            do_osx_setup
        fi
    fi
}

do_setup
