#!/bin/bash

# l'idea è semplice:
# sqg crea la coda per un pacchetto

# Basta ottenere la lista dei pacchetti SBo installati sul sistema.
# Quindi per ogni pacchetto installato sul sistema, creare la sua
# coda con sqg.
# Concatenare tutte le code in un unica coda grezza, che conterrà
# dei pacchetti doppioni.
# Eliminare i doppioni.
# Eliminare dalla coda i pacchetti che risultano installati sul
# sistema ma che non apparetengono a SBo.
# Fatto: avremo una coda ordinata in modo da non avere problemi
# di dipendenze e con i soli pacchetti appartenenti a SBo.
# 
# Nota:
# Verificare che la coda non contenga pacchetti non presenti sul
# sistema.
# Non dovrebbe capitare perchè la coda è stata generata proprio
# a partire dai pacchetti installati. Ma non si sa mai, è una
# verifica per vedere se ci sono problemi.



SBO_PKGS=/tmp/installed-SBo.txt
RAW_QUEUE=/tmp/rawqueue-SBo-rebuilder.tmp
SBO_Q=/tmp/SBo-queue-rebuilder.txt
QDIR=/var/lib/sbopkg/queues
LOGDIR=/var/log/sbo-rebuild
LOG=$(date +%Y.%m.%d-%H.%M-sborebuild.queue.log)

[ -e $RAW_QUEUE ] && rm $RAW_QUEUE
[ -e $SBO_Q ] && rm $SBO_Q
[ ! -d $LOGDIR ] && mkdir $LOGDIR

find /var/log/packages -name "*_SBo"|sed 's/^.*\/\(.*\)-.*-.*-.*$/\1/' > $SBO_PKGS
while read pacchetto; do
	[ ! -e $QDIR/$pacchetto.sqf ] && /usr/sbin/sqg -p $pacchetto
	if [ -e $QDIR/$pacchetto.sqf ]; then
		sed '/^#/d' $QDIR/$pacchetto.sqf >> $RAW_QUEUE
	else
		echo $pacchetto >> $RAW_QUEUE
	fi
done < $SBO_PKGS
for pacchetto in $(awk '!a[$0]++' $RAW_QUEUE); do
	find /var/log/packages -regex "/var/log/packages/$pacchetto-[^-]*-[^-]*-[^-]*_SBo" -exec echo $pacchetto \; >> $SBO_Q
done
cp $SBO_Q $LOGDIR/$LOG
#rm $SBO_Q $SBO_PKGS $RAW_QUEUE
