#!/usr/bin/perl5
#
# doc-kr status page generation script
#
# $Id: make-status-page.pl,v 1.3 1999/01/09 08:55:47 cjh Exp cjh $
#
# CHOI Junho <cjh@kr.freebsd.org>, 99/1/6
#
# $Log: make-status-page.pl,v $
# Revision 1.3  1999/01/09 08:55:47  cjh
# show original revision
# show translated revision
# add link to download original file
# add link to download translated file
# add link to download diff file untranslated(showdiff.cgi added)
#
# Revision 1.2  1999/01/07 00:43:20  cjh
# add </td> at each end of <td>
#

# configuration
#
# location of translated sgml source files(entire dist.)
$transsgmlfiles="/home/dipper/doc-kr/docs/handbook/sgml-ko/*.sgml";
# location of translated sgml source(in the web)
$webtranssgmldir="docs/handbook/sgml-ko";

# directory of original source files(should be cvs checkout'ed)
$originalsgmlprefix="/home/dipper/doc-kr/docs/handbook";
# path of original source(CVS repository)
$originalsgmldir="sgml-en";
# path of original source(in the web)
$weboriginalsgmldir="docs/handbook/sgml-en";

# web location of showdiff.cgi
$cgidiff="cgi-bin/showdiff.cgi";

# location of in-progress translating status file
$progressfile="/home/dipper/doc-kr/docs/progress-handbook.conf";
# command to get CVS status
$cvsstatuscmd="cvs status";

# end of configuration

# main program body
use File::Basename;

@lst = glob $transsgmlfiles;
@olst = glob "$originalsgmlprefix/$originalsgmldir/*.sgml";

# status msg
$msg_complete="¹ø¿ª ¿Ï·á";
$msg_none="¹Ì¹ø¿ª";
$msg_progress="¹ø¿ªÁß";

# hashed by sgml source: translated
%revisions=();
%translators=();
%status=();

# hashed by sgml path: original
%orevisions=();
%opathname=();

# hashed by kmembers.sgml
%transname=();
%transaddr=();

#print basename($lst[0],, ".sgml");

# get revision numbers: translated
foreach $source (sort(@lst))
{
  $basesrc=basename($source, ".sgml").".sgml";
  
  open SOURCE, $source;
  while(<SOURCE>){
    # revision
    if (/^<.*Original.*(\d+\.\d+)/){
       #print "$basesrc ==> $1\n";
       $revisions{$basesrc}=$1;
       $status{$basesrc}=$msg_complete;
    }
    # translator
    if (/(\&a\..*;).*¿ª/){
       #print "$basesrc ==> $1\n";
       $translators{$basesrc}=$1;
    }
   
    # get translator info
    if ($basesrc eq "kmembers.sgml"){
      if (/^<\!ENTITY\ (a\..*)\ \"(.*)/){
        #print "transname &$1; ==> $2\n";
	$entity="&$1;";
        $transname{$entity}=$2;
	$moreline=<SOURCE>;
	$moreline=~/url=\'mailto:(.*)\'/;
	#print "transaddr $entity ==> $1\n";
        $transaddr{$entity}=$1;

      }
    }
  }
  close SOURCE;
}

# get revision numbers: originals!
foreach $source (sort(@olst))
{
  $basesrc=basename($source, ".sgml").".sgml";

  open OSOURCE, "$cvsstatuscmd $source|";
  #print "$cvsstatuscmd $source|";

  $opathname{$basesrc}="$originalsgmldir/$basesrc";
  while(<OSOURCE>){
    # revision
    if (/Repository.*(\d+\.\d+)/){
       #print "Repos: $basesrc ==> $1\n";
       $orevisions{$basesrc}=$1;
    }
  }
  close OSOURCE;
}


# checking progress status
open PROGRESS, $progressfile;
while(<PROGRESS>)
{
  # skip comments
  if (/^#/){
    next;
  }

  # progress reading
  if (/(.*\.sgml)\s+(&a\..*;)\s+(.*)/){
    #print "Prog: $1 ==> $2\n";
    $translators{$1}=$2;
    $status{$1}="$msg_progress($3)";
  }
}

# generate output

print "<table border=1 cellpadding=2 cellspacing=0>\n";
print "<tr>\n";
print "<th>ÆÄÀÏ¸í</th>\n";
print "<th>Revision<br><font size='-1'>Org/Trans/Diff</font></th>\n";
print "<th>¹ø¿ª ÇöÈ²</th>\n";
print "<th>´ã´çÀÚ</th>\n";
print "</tr>\n";

foreach $source (sort(@olst))
{
  $basesrc=basename($source, ".sgml").".sgml";

  print "  <tr>";
  # filename
  print "<td>$basesrc</td>";

  # original version
  print "<td align=center>";
  print "<a href=\"$weboriginalsgmldir/$basesrc\">$orevisions{$basesrc}</a>";
  if ($revisions{$basesrc} eq "") { print " / none"; }
  else {
    print " / <a href=\"$webtranssgmldir/$basesrc\">$revisions{$basesrc}</a>";
  }
  if ($revisions{$basesrc} eq ""){
    print "";
  }elsif ($revisions{$basesrc} ne $orevisions{$basesrc}){
    print " / <a href=\"${cgidiff}?file=$basesrc&r1=$revisions{$basesrc}&r2=$orevisions{$basesrc}\">diff</a>";
  }else{
    print "";
  }
  print "</td>";

  # status
  if ($status{$basesrc} eq ""){
    $status{$basesrc} = $msg_none;
  }
  print "<td align=center>$status{$basesrc}</td>";

  # owner
  print "<td>";
  if ($translators{$basesrc} ne "") {
    print "$transname{$translators{$basesrc}} ";
    print "<a href=\"mailto:$transaddr{$translators{$basesrc}}\">&lt;$transaddr{$translators{$basesrc}}&gt;</a>";
  }
  else {
    print "<br>";
  }
  print "</td>";

  print "</tr>\n";
}

print "</table>\n";

