#!/bin/sh

debcache=/var/cache/debsect

update(){

# Ces variables ne seront pas visibles en dehors de la fonction update()
local debinst section

if [ $(id -u) -ne 0 ]; then
  echo "Vous devez être ROOT"
  exit 1
fi

echo "Mise à jour en cours...";

rm -f "$debcache" 2> /dev/null

for debinst in $(dpkg -l | awk '$1 == "ii" { print $2 }'); do
        info=$(apt-cache showpkg "$debinst")
        case $info in
                *main*)     section=main;;
                *contrib*)  section=contrib;;
                *non-free*) section=non-free;;
                *)          section=unknown;;
        esac
        echo "$section : $debinst" >> "$debcache"
done
}

help() {
        echo "Usage: `basename $0` paquet1 paquet2";
        echo "Options :"
        echo "  update      : mise à jour de la base de données (ROOT uniquement)";
        echo "  list             : liste tout les paquets";
        echo "  search      : liste nom_paquet";
        exit;
}


if [ ! -f "$debcache" ] && [ "$1" != "update" ]; then
        echo "Veuillez faire '`basename $0` update' SVP";
        exit 1;
fi

case $1 in
        list)
                cat "$debcache"
                exit 0
                ;;
        update)
                update
                exit 0
                ;;
        search)
                shift
                for i in "$@"; do
                        grep "$i" "$debcache"
                done
                exit 0
                ;;
        *)
                help
                exit 1
                ;;
esac