#!/bin/bash
# -------------------------------------------------------------------
# Copyright (C) 2012 by Intevation GmbH
# Author(s):
# Sascha Wilde <wilde@intevation.de>

# This program is free software under the GNU GPL (>=v2)
# Read the file COPYING coming with the software for details.
# -------------------------------------------------------------------

# Create before and after the update a package list like this:
#
#    dpkg -l | grep '^ii' >pkgs`date +%F-%T`
#
# Then call this script with both files as arguments to create a nice
# diff for the logbuch.txt

diff --unchanged-group-format='' \
--changed-group-format='@UPDATE:
%<@---
%>@END UPDATE
' \
--new-group-format='@NEW:
%>@END NEW
' \
--old-group-format='@REMOVED:
%<@END REMOVED
' \
--old-line-format='- %l
' \
--new-line-format='+ %l
' \
"$@" | \
awk 'function reset()
{
  oi=0; delete opkgs;
  ni=0; delete npkgs;
  delete overs; delete nvers;
}
BEGIN{ print "* # Packages List Update" }
/^@UPDATE:/{ prefix="  Inst"; reset() }
/^@---/{ }
/^@END UPDATE/{ for (i in npkgs) { print prefix, npkgs[i], "[" overs[npkgs[i]] "]", "(" nvers[npkgs[i]] ")" }}
/^@NEW:/{ prefix="  Inst"; reset() }
/^@END NEW/{ for (i in npkgs) { print prefix, npkgs[i], "(" nvers[npkgs[i]] ")" }}
/^@REMOVED:/{ prefix="  Remv"; reset() }
/^@END REMOVED/{ for (i in opkgs) { print prefix, opkgs[i], "[" overs[opkgs[i]] "]" }}
/^-/{opkgs[++oi]=$3;  overs[$3]=$4}
/^\+/{npkgs[++ni]=$3;  nvers[$3]=$4}
'
