#!/usr/bin/perl # # Tidies up the output of svn2cl to clean it up a touch. # It is fancier than before, but probably no better written. # (though there are noticably more comments!) my $inFileList = 0; my $stuff = ""; my $prefix = "trunk/net-snmp/"; if ( $ARGV[0] =~ /^V/ ) { $b = shift @ARGV; $prefix = "branches/$b/net-snmp/"; } $line1 = <>; if ( $line1 !~ /^svn/ ) { print $line1; } while (<>) { s/^\t/ /; # # Note when we're just starting to look at # the list of files.... # if (/^ *\*/) { $_ =~ s/^ *\* //; $inFileList = 1; $stuff = ""; } if ( $inFileList ) { # # ... and filter out just those from the branch # that we're working with. # if (/$prefix/) { # # XXX: This code implicitly assumes that each entry # appears on a separate line. Which is *probably* # true given the folding done by svn2cl. # But short paths (e.g. top-level files) may # break this assumption, as would extending the # folding point for svn2cl # ToDo: Strip the prefix (or skip the entry) for # each token individually, rather than per-line. # $z = $_; $z =~ s/[ \t]*$prefix/ /; $stuff .= $z; } else { $stuff .= " ".$_; } if ( /:/ ) { # # At the end of this list, we need to reformat it # so that the lines aren't too long or too short # # Flatten things into a single line, # and make sure it ends in a colon $stuff =~ s/\n//g; if ( $stuff =~ /,$/) { $stuff =~ s/,$/:/; } # # If the line is too long, then start re-folding it # if ( $stuff =~ /.{70}/ ) { @z = split /\s/, $stuff; $line = "*"; while ($#z >= 0) { $z = shift @z; if ( "$line $z" =~ /.{70}/ ) { print " $line\n"; $line = " $z"; } else { $line .= " $z"; } } print " $line\n\n"; } else { # # Otherwise, print the list as it stands # print " *$stuff\n\n"; } $stuff = ""; $inFileList = 0; } } else { # # If we're not processing the list of files, # then just pass things through. print $_; } }