apt-feed-logbuch.sh
branchlenny
changeset 2 bc049aafe824
parent 0 117aabc28c6c
--- a/apt-feed-logbuch.sh	Fri Apr 29 16:34:44 2011 +0200
+++ b/apt-feed-logbuch.sh	Mon May 02 15:09:26 2011 +0200
@@ -11,26 +11,34 @@
 export LANG=C
 export LC_CTYPE=en_US.UTF-8
 
-APT_LOG="/var/log/apt/history.log"
-LINES_COUNT="/tmp/lines_count.dat"
-LOGBUCH_OPT=""
+LOGBUCH_OPTS=""
 
 if test -f /etc/default/ius.upgrade.conf; then
     . /etc/default/ius.upgrade.conf
 fi
 
+TMPFILE1=$(tempfile)
+TMPFILE2=$(tempfile)
+trap "rm -f $TMPFILE1 $TMPFILE2" EXIT
+
 APT_CMD=$(ps -p $1 -o args=)
-APT_TMP="/tmp/$$.tmp"
-APT_OUT="/tmp/$$.out"
+
+APT=`echo $APT_CMD | awk '{ print $1 }'`
 
-if [ $APT_LOG -nt $LINES_COUNT ]; then
-  BEFOR=$(cat $LINES_COUNT)
-  AFTER=$(wc -l < $APT_LOG)
-  LINES=$(($AFTER - $BEFOR - 1))
-  echo APT: $APT_CMD > $APT_OUT
-  tail -n $LINES $APT_LOG | sed -e '/^Start-Date:/d;/^Commandline:/d;/^End-Date:/d' >> $APT_TMP
-  perl -ne 'chomp; ($action, $packages) = split " ", $_, 2; print map { "- $action $_\n" } $packages =~ /\S+\s\(.*?\)/g' $APT_TMP >> $APT_OUT
-  logbuch $LOGBUCH_OPT --message=@$APT_OUT
-  # cleanup
-  rm -f $APT_TMP $LINES_COUNT $APT_OUT
+if [ "$APT" = "aptitude" ]; then
+    APT_OPTS="--assume-yes --quiet --verbose --show-versions"
+else
+    APT_OPTS="--yes"
 fi
+
+APT_ARGS=$(echo $APT_CMD | sed "s/$APT[[:space:]]\+//")
+
+# Simulation
+$APT --simulate $APT_OPTS $APT_ARGS > $TMPFILE1 2>&1
+if tail -1 $TMPFILE1 | grep --quiet --ignore-case abort; then
+    exit
+fi
+
+grep '^Inst\|Conf\|Remv\|Purg' $TMPFILE1 > $TMPFILE2
+
+logbuch $LOGBUCH_OPTS --message=apt:"$APT_CMD"@$TMPFILE2