Created
September 5, 2012 06:13
-
-
Save snaga/3631442 to your computer and use it in GitHub Desktop.
A script to summarize PostgreSQL documentation changes in SGML files between two PostgreSQL versions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/perl | |
# ------------------------------------------------------------- | |
# doc_sgml_cmp.pl | |
# | |
# A script to summarize PostgreSQL documentation changes | |
# in SGML files between two PostgreSQL versions. | |
# | |
# Written by Satoshi Nagayasu <[email protected]> | |
# ------------------------------------------------------------- | |
use strict vars; | |
my $TARGET1=shift; | |
my $TARGET2=shift; | |
sub usage { | |
print "Usage: $0 [path1] [path2]\n"; | |
print "\n"; | |
print "Both path1 and path2 must point a SGML source directory.\n"; | |
print "\n"; | |
} | |
# those directories exist? | |
if ( ! -f "$TARGET1/postgres.sgml" || ! -f "$TARGET2/postgres.sgml" ) | |
{ | |
&usage; | |
exit; | |
} | |
open(FILE, "find $TARGET2 -type f -name '*.sgml' | sort |" ) || die($!); | |
print "file name,status,total lines,modified lines\n"; | |
while(<FILE>) | |
{ | |
chomp; | |
my $file = $_; | |
$file =~ s,^./,,; | |
my $basename = $file; | |
$basename =~ s,.*sgml/,,; | |
my $lc = `wc -l $_ | sed 's/ .*//'`; | |
chomp($lc); | |
if ( ! -f "$TARGET1/$file" ) | |
{ | |
print "$basename,added,$lc,\n"; | |
} | |
else | |
{ | |
my $mode = 0; | |
my $change = 0; | |
open(DIFF, "diff -rc $TARGET1/$file $file |") || die($!); | |
while(<DIFF>) | |
{ | |
if ( /^\*\*\* \d+,\d+ \*\*\*\*/ ) | |
{ | |
$mode = 0; | |
} | |
if ( /^--- \d+,\d+ ----/ ) | |
{ | |
$mode = 1; | |
} | |
if ( $mode == 1 && /^\!/ ) | |
{ | |
$change++; | |
} | |
if ( $mode == 1 && /^\+/ ) | |
{ | |
$change++; | |
} | |
# print; | |
} | |
close(DIFF); | |
if ( $change == 0 ) | |
{ | |
print "$basename,not changed,$lc,$change\n"; | |
} | |
else | |
{ | |
print "$basename,changed,$lc,$change\n"; | |
} | |
} | |
} | |
close(FILE); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment