PennMUSH 1.8.3p11
authorRick L Bird <nveid@yahoo.com>
Thu, 5 May 2011 21:38:23 +0000 (17:38 -0400)
committerRick L Bird <nveid@yahoo.com>
Thu, 5 May 2011 21:39:25 +0000 (17:39 -0400)
Author: allthecoolkidshaveone
<allthecoolkidshaveone@ba372814-4f39-11de-9ad6-1127a62b9fcd>
Date:   Fri Sep 11 17:20:46 2009 +0000

    Raevnos can't spel gud.

Author: allthecoolkidshaveone
<allthecoolkidshaveone@ba372814-4f39-11de-9ad6-1127a62b9fcd>
Date:   Fri Sep 11 17:17:41 2009 +0000

        Add script for grepping changelogs.
Fixes #170

utils/grep-cl.pl [new file with mode: 0755]

diff --git a/utils/grep-cl.pl b/utils/grep-cl.pl
new file mode 100755 (executable)
index 0000000..0b2172c
--- /dev/null
@@ -0,0 +1,79 @@
+#!/usr/bin/perl -w
+
+# Tool to grep changelogs and show what versions mention a given string.
+
+use strict;
+use Getopt::Std;
+
+sub HELP_MESSAGE {
+    print STDERR <<EOH;
+Usage: $0 [OPTIONS] REGEXP
+
+Searches Penn help files for occurrences of a regular expression and
+display the results in a smart fashion. Run from the base PennMUSH
+directory.
+
+Options:
+
+    -i: Ignore case.
+    -b: Anchor the search regexp with word-boundries to avoid partial matches.
+    -p: Print each matching line instead of a summary.
+--help: This message.
+
+EOH
+exit 0;
+}
+
+our ($opt_i, $opt_b, $opt_p);
+
+die "Unknown option given.\n" unless getopts("ibp");
+
+my $string = "@ARGV";
+my @files = glob "CHANGES.*";
+my $matches = 0;
+my $pattern = "";
+
+# Massage the search string per options. This approach will quickly
+# grow unmanageable with many more.
+if ($opt_i) {
+    if ($opt_b) {
+       $pattern = qr/\b$string\b/i;
+    } else {
+       $pattern = qr/$string/i;
+    }
+} else {
+    if ($opt_b) {
+       $pattern = qr/\b$string\b/;
+    } else {
+       $pattern = qr/$string/;
+    }
+}
+
+foreach my $file (@files) {
+    open CHANGELOG, "<", $file 
+       or (warn "Unable to open $file: $!\n" && next);
+    my $version = "Unknown";
+    my $vmatches = 0;
+    while (<CHANGELOG>) {
+       if (/^Version (\d[\d.]+ patchlevel \d+)/) {
+           print "Found $vmatches occurrences in $version\n" if $vmatches > 0 && !$opt_p;
+           $version = $1;
+           $vmatches = 0;
+           next;
+       }
+       if (/$pattern/) {
+           $matches++;
+           $vmatches++;
+           if ($opt_p) {
+               print "In version $version:\n" if $vmatches == 1;
+               print;
+           }
+       }       
+    }
+    print "Found $vmatches occurrences in $version\n" if $vmatches > 0 && !$opt_p;
+    close CHANGELOG;
+}
+
+
+print "No occurrences of '$string' found.\n" if $matches == 0;
+