chiark / gitweb /
start next version
[developers-reference.git] / translation-status
1 #!/usr/bin/perl -w
2
3 # This script checks if the translations of the documents are up to date.
4 # When called with "-d" option, it also prints what has changed in the
5 # original since last translation
6
7 # SYNOPSIS:
8 #             ./translation-status [-d] [-v] [lang]
9 #
10 #       (uses $lang set below if lang is not given on commandline)
11
12 use Getopt::Std;
13 $opt_d = $opt_v = 0;
14 getopts('dv');
15 # You may set this to your default language code
16 $lang = shift || "fr";
17
18 sub checkdiff {
19     my ($plfname, $enfname) = (@_);
20     my ($plrev, $enrev) = getrev($plfname, $enfname);
21     $plrev and $enrev or return;
22     if ( "$plrev" ne "$enrev" ) {
23         if ($opt_d) {
24             my $s = "cvs diff -b -u -r $plrev -r $enrev $enfname";
25             warn "running $s:\n" if ($opt_v);
26             system($s);
27         } else {
28             print "$enfname : $plrev -> $enrev\n";
29         }
30     }
31 }
32
33 sub getrev {
34     my ($plfname, $enfname) = (@_);
35     my ($plrev, $enrev) = (0, 0);
36
37     warn "checking $plfname:\n" if $opt_v;
38     open FILE, $plfname or warn "$plfname: $!\n" and return;
39     while (<FILE>) {
40         if (/<!entity\s*cvs-en-rev\s*"([\d\.]+)"/i) {
41             $plrev = $1;
42             last;
43         }
44     }
45     warn "checking $enfname:\n" if $opt_v;
46     open FILE, $enfname or warn "$enfname: $!\n" and return;
47     while (<FILE>) {
48         if (/\$Id: [^\s]+ ([\d\.]+) .* Exp \$/) {
49             $enrev = $1;
50             last;
51         }
52         if (/\$Revision: ([\d\.]+) \$/) {
53             $enrev = $1;
54             last;
55         }
56     }
57     close FILE;
58     warn "failed to find revision for $plfname\n" unless $plrev;
59     warn "failed to find revision for $enfname\n" unless $enrev;
60     return ($plrev, $enrev);
61 }
62
63 checkdiff("developers-reference.$lang.sgml", "developers-reference.sgml");