On Tue, 2007-10-16 at 17:28 +0200, Luca Bedogni wrote:
[...]
> Hi
>     a diff option that display changes in the wnpp output could be useful,
> for instance when running wnpp-alert in a cronjob. With this option you
> can see only the differences between different executions of the program,
> seeing only the new or close RFH, O or RFA bugs.

Thanks for the suggestion, and the patch. I've committed a slightly
modified version (log attached) which produces more "diffesque" output.

Adam
Author: adam-guest
Date: 2007-10-22 18:05:18 +0000 (Mon, 22 Oct 2007)
New Revision: 819

Modified:
   trunk/debian/changelog
   trunk/scripts/wnpp-alert.1
   trunk/scripts/wnpp-alert.sh
Log:
* wnpp-alert: Add an option to display the changes since the last
  invocation. Based on a patch by Luca Bedogni; thanks.
  (Closes: #446910)

Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog      2007-10-17 19:53:27 UTC (rev 818)
+++ trunk/debian/changelog      2007-10-22 18:05:18 UTC (rev 819)
@@ -3,6 +3,9 @@
   [ Adam D. Barratt ]
   * licensecheck: Better detect 3-clause BSD licenses (Closes: #442630)
   * bts: Update for new bugspam.cgi syntax (Closes: #445557)
+  * wnpp-alert: Add an option to display the changes since the last
+    invocation. Based on a patch by Luca Bedogni; thanks.
+    (Closes: #446910)
 
   [ James Vega ]
   * debcheckout: -u should imply -a, as documented.  Thanks Luca Capello for
@@ -18,7 +21,7 @@
   * debcommit: Name git tags "debian/$version" or just with the package
     version number for native version numbers. Closes: #446699
 
- -- Joey Hess <[EMAIL PROTECTED]>  Tue, 16 Oct 2007 16:33:07 -0400
+ -- Adam D. Barratt <[EMAIL PROTECTED]>  Mon, 22 Oct 2007 18:49:49 +0100
 
 devscripts (2.10.9) unstable; urgency=low
 

Modified: trunk/scripts/wnpp-alert.1
===================================================================
--- trunk/scripts/wnpp-alert.1  2007-10-17 19:53:27 UTC (rev 818)
+++ trunk/scripts/wnpp-alert.1  2007-10-22 18:05:18 UTC (rev 819)
@@ -4,7 +4,7 @@
 .SH SYNOPSIS
 \fBwnpp-alert\fR
 .br
-\fBwnpp-alert \-\-help|\-\-version\fR
+\fBwnpp-alert \-\-help|\-\-version|\-\-diff\fR
 .SH DESCRIPTION
 \fBwnpp-alert\fR downloads the lists of packages which have been
 orphaned (O), are up for adoption (RFA), or the maintainer has asked
@@ -12,6 +12,11 @@
 packages installed on the system which are in those lists.
 .SH OPTIONS
 .TP
+.BR \-\-diff ", " \-d
+If the \fI~/.devscripts_cache\fP directory exists, compare the output of
+\fBwnpp-alert\fR to the previous output (cached in the file
+\fIwnpp-diff\fR) and output the differences.
+.TP
 .BR \-\-help ", " \-h
 Show a summary of options.
 .TP

Modified: trunk/scripts/wnpp-alert.sh
===================================================================
--- trunk/scripts/wnpp-alert.sh 2007-10-17 19:53:27 UTC (rev 818)
+++ trunk/scripts/wnpp-alert.sh 2007-10-22 18:05:18 UTC (rev 819)
@@ -15,6 +15,7 @@
 
 PROGNAME=`basename $0`
 CACHEDIR=~/.devscripts_cache
+CACHEDDIFF="${CACHEDIR}/wnpp-diff"
 
 usage () { echo \
 "Usage: $PROGNAME [--help|-h|--version|-v]
@@ -31,6 +32,23 @@
 Modifications: Julian Gilbey <[EMAIL PROTECTED]>"
 }
 
+wnppdiff () {
+    if [ ! -f "$CACHEDDIFF" ]; then
+        # First use
+        comm -12 $WNPP_PACKAGES $INSTALLED | sed -e 's/+/\\+/g' | \
+          xargs -i egrep '^[A-Z]+ [0-9]+ {} ' $WNPP | \
+          tee $CACHEDDIFF
+    else
+        comm -12 $WNPP_PACKAGES $INSTALLED | sed -e 's/+/\\+/g' | \
+          xargs -i egrep '^[A-Z]+ [0-9]+ {} ' $WNPP > $WNPP_DIFF
+        sort -o $CACHEDDIFF $CACHEDDIFF
+        sort -o $WNPP_DIFF $WNPP_DIFF
+        comm -3 $CACHEDDIFF $WNPP_DIFF | \
+          sed -e 's/\t/\+/g' -e 's/^\([^+]\)/-\1/g'
+        mv $WNPP_DIFF $CACHEDDIFF
+    fi
+}
+
 if [ "x$1" = "x--help" -o "x$1" = "x-h" ]; then usage; exit 0; fi
 if [ "x$1" = "x--version" -o "x$1" = "x-v" ]; then version; exit 0; fi
 
@@ -55,6 +73,12 @@
 trap "rm -f '$INSTALLED' '$WNPP' '$WNPPTMP' '$WNPP_PACKAGES'" \
   0 1 2 3 7 10 13 15
 
+if [ "x$1" = "x--diff" ] || [ "x$1" = "x-d" ]; then
+    WNPP_DIFF=`mktemp -t wnppalert-wnpp_diff.XXXXXX`
+    trap "rm -f '$INSTALLED' '$WNPP' '$WNPPTMP' '$WNPP_PACKAGES' '$WNPP_DIFF'" \
+      0 1 2 3 7 10 13 15
+fi
+
 # Here's a really sly sed script.  Rather than first grepping for
 # matching lines and then processing them, this attempts to sed
 # every line; those which succeed execute the 'p' command, those
@@ -86,5 +110,14 @@
 sort -u \
 > $INSTALLED
 
+if [ "x$1" = "x--diff" -o "x$1" = "x-d" ]; then 
+    if [ -d "$CACHEDIR" ]; then
+        wnppdiff
+        exit 0
+    else
+        echo "$PROGNAME: Unable to create diff; displaying full output" 
+    fi
+fi
+
 comm -12 $WNPP_PACKAGES $INSTALLED | sed -e 's/+/\\+/g' | \
 xargs -i egrep '^[A-Z]+ [0-9]+ {} ' $WNPP


Reply via email to