#!/bin/bash

debians=(squeezy wheezy jessie sid testing unstable experimental)
ubuntus=(natty oneiric precise quantal raring saucy trusty)

DIST=`basename $0 | cut -f2 -d '-'`
ARCH=`basename $0 | cut -f3 -d '-'`
OPERATION=$1
BASE_DIR="$HOME/pbuilder"
APTCACHE="$BASE_DIR/cache/apt/$DIST-$ARCH"

type() {
    contains() {
        local n=$#
        local value=${!n}
        for ((i=1; i < $#; i++)) {
            if [ "${!i}" == "${value}" ]; then
                return 0
            fi
        }
        return 1
    }
    if (contains "${debians[@]}" "$DIST") ; then
        TYPE=debian
        else
            if (contains "${ubuntus[@]}" "$DIST") ; then
                TYPE=ubuntu
            fi
    fi
}

sett() {
    case $TYPE in
        debian)
            MIRROR="http://http.debian.net/debian"
            COMPONENTS="main contrib"
            OTHER='--debootstrapopts "--keyring=/usr/share/keyrings/debian-archive-keyring.gpg"'
            ;;
        ubuntu)
            MIRROR="http://archive.ubuntu.com/ubuntu"
            COMPONENTS="main universe multiverse"
            ;;
    esac
    if [ ! -d $APTCACHE ] ; then
        mkdir -p $APTCACHE
    fi
}


execute() {
    sudo pbuilder $OPERATION \
        --architecture $ARCH \
        --basetgz $BASE_DIR/$DIST-$ARCH-base.tgz \
        --distribution $DIST \
        --components "$COMPONENTS" \
        --aptcache $APTCACHE \
        --buildresult $BASE_DIR/result/$DIST/$ARCH \
        --mirror $MIRROR \
          $OTHER \
          "$@"
}

case $OPERATION in
    create|update|build|clean|login|execute )
        execute
        ;;
    *)
        echo "Invalid command."
        echo "Valid commands are:"
        echo "   create"
        echo "   update"
        echo "   build"
        echo "   clean"
        echo "   login"
        echo "   execute"
        exit 1
        ;;
esac



