#!/usr/bin/env bash
# Copyright 2012 Canonical Ltd.  This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).

#
# System-wide setup for odev.  This requires sudo.

# Exit immediately if a command exits with a non-zero status.
set -o errexit
# Treat unset variables as an error when substituting.
set -o nounset

## install some dependencies
pkgs=""
pkgs="$pkgs genisoimage coreutils" # for cloud-init's 'make-iso'
pkgs="$pkgs python-libvirt libvirt-bin" # for libvirt interaction
pkgs="$pkgs socat" # for libvirt-> cobbler
pkgs="$pkgs python-cheetah" # for setup.py
pkgs="$pkgs qemu-utils qemu-kvm" # needed generally

filter_installed_packages() {
    # write to stdout, a list of packages not installed locally
    # $ dpkg-query --show cloud-init
    # No packages found matching cloud-init.
    LC_ALL=C dpkg-query --show "$@" 2>&1 |
        awk '$0 ~ /[Nn]o packages/ { sub("[.]$","",$NF); pkgs[n]=$NF; n=n+1; };
            END { for(p in pkgs) {printf("%s ",pkgs[p])}; printf("\n"); }' \
            n=0
}

new_pkgs=$(filter_installed_packages $pkgs)
if [ -n "$new_pkgs" ]; then
    echo "need to install: ${new_pkgs}"
    sudo apt-get update -q || /bin/true
    sudo apt-get install -y $pkgs </dev/null
fi

new_groups=""
for group in libvirtd kvm; do
    groups $USER | grep -q $group && continue
    sudo adduser $USER $group
    new_groups="${new_groups:+${new_groups} }${group}"
done

if [ -n "$new_groups" ]; then
    cat <<EOF
Done.

The script just added you to the system group[s] $new_groups

If you were not previously in these groups, you will need to log out and
log back in again to make the changes take effect.
EOF

    # The user may need to log out at this point.
    echo "Ctrl-C if you want to log out now.  Otherwise, press <enter>."
    read
fi
