#!/bin/sh
##
## debian-doppi
##
## Interviene nella directory *corrente* eliminando i file
## doppi, più vecchi. Il confronto viene fatto utilizzando:
##
##       dpkg --field <archivio> package
##       dpkg --field <archivio> version
##       dpkg --field <archivio> architecture
##       dpkg --compare-versions <versione1> eq <versione0>
##       dpkg --compare-versions <versione1> gt <versione0>
##       dpkg --compare-versions <versione1> lt <versione0>
##
#
# Inizializza le variabili di ambiente che servono per
# accumulare i valori per il confronto.
#
ARCHIVIO0=""
ARCHIVIO1=""
PACCHETTO0=""
PACCHETTO1=""
VERSIONE0=""
VERSIONE1=""
ARCHITETTURA0=""
ARCHITETTURA1=""
#
# Inizia il ciclo di scansione degli archivi Debian che si
# trovano nella directory corrente.
#
for ARCHIVIO1 in *.deb
do
    #
    # Se il nome è «*.deb», non ci sono file del genere.
    #
    if [ "$ARCHIVIO1" = "*.deb" ]
    then
        #
        # Non si fa nulla.
        #
        exit
    fi
    #
    # Estrae il nome del pacchetto.
    #
    PACCHETTO1=`dpkg --field $ARCHIVIO1 package`
    #
    # Estrae la versione del pacchetto.
    #
    VERSIONE1=`dpkg --field $ARCHIVIO1 version`
    #
    # Estrae l'architettura.
    #
    ARCHITETTURA1=`dpkg --field $ARCHIVIO1 architecture`
    #
    # Confronta con il pacchetto precedente.
    #
    if [ "$PACCHETTO1" == "$PACCHETTO0" ]
    then
        if dpkg --compare-versions "$VERSIONE1" \
                                   eq "$VERSIONE0"
        then
            #
            # Si tratta di un'anomalia in cui si deve
            # intervenire a mano.
            #
            echo "Archivi con la stessa versione:"
            echo "    $ARCHIVIO0"
            echo "    $ARCHIVIO1"
            echo
            #
            # In questo caso, non occorre spostare i valori
            # nelle variabili.
            #
        elif dpkg --compare-versions "$VERSIONE1" \
                                     gt "$VERSIONE0"
        then
            #
            # Si elimina l'archivio del pacchetto più
            # vecchio.
            #
            rm -f "$ARCHIVIO0"
            echo "Eliminato $ARCHIVIO0"
            #
            # Sposta i valori nelle variabili.
            #
            ARCHIVIO0="$ARCHIVIO1"
            PACCHETTO0="$PACCHETTO1"
            VERSIONE0="$VERSIONE1"
            ARCHITETTURA0="$ARCHITETTURA1"
            #
        elif dpkg --compare-versions "$VERSIONE1" \
                                     lt "$VERSIONE0"
        then
            #
            # Si elimina l'archivio del pacchetto più
            # vecchio.
            #
            rm -f "$ARCHIVIO1"
            echo "Eliminato $ARCHIVIO1"
            #
            # In questo caso, non occorre spostare i valori
            # nelle variabili.
            #
        else
            #
            # Questo caso non dovrebbe verificarsi.
            #
            echo "C'è un errore nel confronto degli"
            echo "archivi seguenti:"
            echo "    $ARCHIVIO0"
            echo "    $ARCHIVIO1"
            echo
            #
            # In questo caso, non occorre spostare i valori
            # nelle variabili.
            #
        fi
    else
        #
        # Dal momento che i pacchetti sono differenti, si
        # devono salvare le variabili prima di procedere.
        #
        ARCHIVIO0="$ARCHIVIO1"
        PACCHETTO0="$PACCHETTO1"
        VERSIONE0="$VERSIONE1"
        ARCHITETTURA0="$ARCHITETTURA1"
    fi
done
#
