annotate bin/check-titles @ 275:327943acc84b

Correctly sort comments by submission time.
author Steve Kemp <steve@steve.org.uk>
date Mon, 01 Sep 2008 20:36:29 +0100
parents a9e686d7f419
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
227
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
1 #!/usr/bin/perl -w
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
2 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
3 # A simple utility which will process each "*.txt" file inside a named
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
4 # directory.
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
5 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
6 # Any entries with a duplicate title will be alerted.
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
7 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
8 # Steve
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
9 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
10
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
11 use strict;
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
12 use warnings;
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
13
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
14
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
15 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
16 # Get the directory and ensure it exists.
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
17 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
18 my $dir = shift;
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
19 die "Usage: $0 directory" unless ( defined($dir) );
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
20 die "Not a directory : $dir" unless ( -d $dir );
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
21
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
22
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
23 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
24 # The hash of arrays
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
25 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
26 my $titles;
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
27
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
28
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
29 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
30 # Find the files.
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
31 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
32 foreach my $file ( sort( glob( $dir . "/*" ) ) )
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
33 {
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
34
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
35 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
36 # Skip non-files
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
37 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
38 next if ( -d $file );
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
39 next if ( $file =~ /~$/ );
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
40
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
41 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
42 # Title for this entry.
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
43 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
44 my $title = undef;
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
45
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
46 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
47 # Read each file, and look for the title.
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
48 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
49 open( IN, "<", $file )
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
50 or die "Failed to read $file - $!";
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
51 foreach my $line (<IN>)
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
52 {
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
53 $title = $2
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
54 if ( !defined($title)
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
55 && ( $line =~ /^(Subject|Title):(.*)/i ) );
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
56
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
57 }
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
58 close(IN);
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
59
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
60 #
228
a9e686d7f419 Make sure we only include entries with title.
Steve Kemp <steve@steve.org.uk>
parents: 227
diff changeset
61 # Ignore entries with no title.
a9e686d7f419 Make sure we only include entries with title.
Steve Kemp <steve@steve.org.uk>
parents: 227
diff changeset
62 #
a9e686d7f419 Make sure we only include entries with title.
Steve Kemp <steve@steve.org.uk>
parents: 227
diff changeset
63 next if ( !$title );
a9e686d7f419 Make sure we only include entries with title.
Steve Kemp <steve@steve.org.uk>
parents: 227
diff changeset
64
a9e686d7f419 Make sure we only include entries with title.
Steve Kemp <steve@steve.org.uk>
parents: 227
diff changeset
65 #
227
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
66 # Get current entries we might have found with
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
67 # this title; and add on the new one.
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
68 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
69 my $a = $titles->{ $title };
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
70 push( @$a, $file );
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
71 $titles->{ $title } = $a;
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
72 }
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
73
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
74
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
75 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
76 # Now look for dupes
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
77 #
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
78 my $fail = 0;
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
79 foreach my $title ( keys %$titles )
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
80 {
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
81 my $a = $titles->{ $title };
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
82
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
83 if ( ( scalar @$a ) > 1 )
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
84 {
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
85 print "Title: $title\n";
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
86 foreach my $file (@$a)
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
87 {
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
88 print "\t" . $file . "\n";
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
89 }
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
90
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
91 $fail = 1;
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
92 }
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
93 }
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
94
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
95
9e79fe60ad47 Added to repository
Steve Kemp <steve@steve.org.uk>
parents:
diff changeset
96 exit($fail);