#!/bin/bash
# Description: Debian Package Manager
set -e

function _apt {
    local pkg=$1
    if ! dpkg -s $pkg >/dev/null 2>&1; then
        if [ -z "$__apt_updated" ]; then
            _apt_update
        fi
        _run "[apt] Install $pkg" sudo apt-get install -y $1
    else
        echo "[apt] $pkg is already installed, skipping."
    fi
}

function _apt_update {
    _run "Update APT cache" sudo apt-get update
    __apt_updated=yes
}

function _apt_source {
    _run "[apt] Add Source: $1" sudo add-apt-repository -u -y "$1"
}

function _dpkg {
    local pkg=$1
    local url=$2
    if ! dpkg -s $pkg >/dev/null 2>&1; then
        local download=$(mktemp -d)
        _run "[dpkg] Downloading $pkg" curl -q -o "$download/$pkg.deb" "$url"
        _run "[dpkg] Installing $pkg" sudo dpkg -i "$download/$pkg.deb"
        rm -rf "$download"
    else
        echo "[dpkg] $pkg is already installed, skipping."
    fi
}

_apt software-properties-common

function _ppa {
    _apt_source ppa:$1
}