aboutsummaryrefslogtreecommitdiff
path: root/desiredata/src/plusminus
diff options
context:
space:
mode:
Diffstat (limited to 'desiredata/src/plusminus')
-rwxr-xr-xdesiredata/src/plusminus42
1 files changed, 42 insertions, 0 deletions
diff --git a/desiredata/src/plusminus b/desiredata/src/plusminus
new file mode 100755
index 00000000..553f84fa
--- /dev/null
+++ b/desiredata/src/plusminus
@@ -0,0 +1,42 @@
+#!/usr/bin/env ruby
+# plusminus, Copyright © 2004 by Mathieu Bouchard
+# this program makes stats about a unified diff (diff -u) output.
+# for example, run this command: cvs diff -u | ./plusminus
+# NOTE: the -u option is required! (you can put it in ~/.cvsrc)
+
+puts "-"*64
+
+$plustot=0
+$minustot=0
+
+def show
+ printf "%20s %+5d %+5d (net %+5d)\n", $file, $plus, -$minus, $plus-$minus
+end
+
+loop{
+ line = gets
+ break if not line
+ if /^diff/.match line then
+ x = line.split(/\s+/)
+ $plustot+=$plus if $plus
+ $minustot+=$minus if $minus
+ show if $file
+ $file = x[-1]
+ $on=false
+ $plus=0
+ $minus=0
+ elsif /^\@\@/ =~ line then $on=true
+ elsif $on and /^\+/ =~ line then $plus+=1
+ elsif $on and /^\-/ =~ line then $minus+=1
+ end
+}
+
+$plustot+=$plus if $plus
+$minustot+=$minus if $minus
+show if $file
+
+$file="total"
+$plus=$plustot
+$minus=$minustot
+puts "-"*64
+show