#!/bin/bash

##############################################
# DPKG listing (list all installed packages) #
##############################################

if ! [ -f /etc/backup-daily.conf ]; then
	echo "/etc/backup-daily.conf not found"
	exit 4
fi

BACKUP_ROOT=

. /etc/backup-daily.conf

[ -z $BACKUP_ROOT ] && exit 11
[ -d $BACKUP_ROOT ] || exit 21

BACKUP_DIR=$BACKUP_ROOT/sys-data
[ -d $BACKUP_DIR ] || mkdir $BACKUP_DIR

##############################################

CHRDIR=/chroot

TMP_DIR=${BACKUP_DIR}/dpkglist-tmp
TAR_FILE=${BACKUP_DIR}/dpkglist-tmp.tar.bz2
BCK_FILE=${BACKUP_DIR}/dpkglist.tar.bz2

if [ -d $TMP_DIR ]; then
	rm -r $TMP_DIR
fi

mkdir $TMP_DIR

[ -f $TAR_FILE ] && rm $TAR_FILE

# gather from all the places
if [ -d $CHRDIR ]; then
    CHROOTS=`ls $CHRDIR`
fi

dpkg-query -W -f '${Package}\n' > $TMP_DIR/root.txt
for CHRD in $CHROOTS; do
    if [ -x $CHRDIR/$CHRD/usr/bin/dpkg-query ]; then
	chroot $CHRDIR/$CHRD dpkg-query -W -f '${Package}\n' >$TMP_DIR/chr-$CHRD.txt
    fi
done

cd $TMP_DIR
tar -cjPf $TAR_FILE *.txt

rm -r $TMP_DIR

chown 0:0 $TAR_FILE
chmod 0600 $TAR_FILE

if [ -f $TAR_FILE ]; then
	[ -f $BCK_FILE ] && rm $BCK_FILE
	mv $TAR_FILE $BCK_FILE
fi
