OSDN Git Service

(split) LDP: (Makefile) Make draft/release/stats per-po file processing
authorAkihiro MOTOKI <motoki@da.jp.nec.com>
Sat, 4 May 2013 11:16:59 +0000 (20:16 +0900)
committerAkihiro MOTOKI <motoki@da.jp.nec.com>
Sat, 4 May 2013 11:16:59 +0000 (20:16 +0900)
Makefile
tools/extract-untrans.pl [new file with mode: 0755]
tools/generate-list.pl [moved from untrans-list.pl with 63% similarity]

index d6d7780..39be62f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -5,22 +5,22 @@ THRESH_REL = 80
 FLAGS ?=
 PO4AFLAGS ?= -k $(THRESH) $(FLAGS)
 
 FLAGS ?=
 PO4AFLAGS ?= -k $(THRESH) $(FLAGS)
 
+PO4A_SUBDIRS = $(notdir $(wildcard po4a/*))
+
 all: translate
 
 all: translate
 
-translate: jm-setup
-       LC_ALL=C $(MAKE) translate \
-         PO4AFLAGS="$(PO4AFLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR)
-       @# I don't know why untrans.txt is generated in release target
-       $(RM) untrans.txt
+translate:     $(patsubst %, translate-%, $(PO4A_SUBDIRS))
 
 translate-%: jm-setup
 
 translate-%: jm-setup
-       LC_ALL=C $(MAKE) translate-$* \
+       LC_ALL=C $(MAKE) process-$* \
          PO4AFLAGS="$(PO4AFLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR)
 
          PO4AFLAGS="$(PO4AFLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR)
 
-release:       jm-setup
+release:       $(patsubst %, release-%, $(PO4A_SUBDIRS))
+
+release-%:     jm-setup
        rm -f $(PERKAMON_DIR)/build/ja
        ln -s ../../release $(PERKAMON_DIR)/build/ja
        rm -f $(PERKAMON_DIR)/build/ja
        ln -s ../../release $(PERKAMON_DIR)/build/ja
-       LC_ALL=C $(MAKE) translate \
+       LC_ALL=C $(MAKE) process-$* \
          PO4AFLAGS="-k $(THRESH_REL) $(FLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR)
        $(RM) $(PERKAMON_DIR)/build/ja
        ln -s ../../draft $(PERKAMON_DIR)/build/ja
          PO4AFLAGS="-k $(THRESH_REL) $(FLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR)
        $(RM) $(PERKAMON_DIR)/build/ja
        ln -s ../../draft $(PERKAMON_DIR)/build/ja
@@ -30,23 +30,29 @@ release:    jm-setup
          git status release | grep deleted | awk '{print $$3;}' | xargs -n1 echo; \
          git status release | grep deleted | awk '{print $$3;}' | xargs -n1 git checkout; \
        fi
          git status release | grep deleted | awk '{print $$3;}' | xargs -n1 echo; \
          git status release | grep deleted | awk '{print $$3;}' | xargs -n1 git checkout; \
        fi
-       @# I don't know why untrans.txt is generated in release target
-       $(RM) untrans.txt
 
 
-update-stats:  jm-setup
-       mkdir _transtmp
+update-stats:  untrans.html
+
+untrans.html:  $(patsubst %, stats/%, $(PO4A_SUBDIRS))
+       ./tools/generate-list.pl $^ > $@
+
+stats/%:       stamp-jm-setup po4a/%/po/ja.po
+       @echo "*************** $* ***************"
+       mkdir -p stats
+       mkdir -p _transtmp
        $(RM) $(PERKAMON_DIR)/build/ja
        ln -s ../../_transtmp $(PERKAMON_DIR)/build/ja
        $(RM) $(PERKAMON_DIR)/build/ja
        ln -s ../../_transtmp $(PERKAMON_DIR)/build/ja
-       LC_ALL=C $(MAKE) translate \
+       LC_ALL=C $(MAKE) process-$* \
          PO4AFLAGS="-k 100 $(FLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR) \
          | tee _log.txt
          PO4AFLAGS="-k 100 $(FLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR) \
          | tee _log.txt
-       ./untrans-list.pl < _log.txt > untrans.html
+       ./tools/extract-untrans.pl < _log.txt > $@
        $(RM) $(PERKAMON_DIR)/build/ja
        ln -s ../../draft $(PERKAMON_DIR)/build/ja
        $(RM) -r _transtmp
        $(RM) _log.txt
        $(RM) $(PERKAMON_DIR)/build/ja
        ln -s ../../draft $(PERKAMON_DIR)/build/ja
        $(RM) -r _transtmp
        $(RM) _log.txt
-       @# I don't know why untrans.txt is generated in release target
-       $(RM) untrans.txt
+
+clean-stats:
+       $(RM) -r stats
 
 release-tl:
        set -e; if git status release | grep modified >/dev/null; then \
 
 release-tl:
        set -e; if git status release | grep modified >/dev/null; then \
@@ -71,11 +77,11 @@ format-%:
          cd $$cur; \
        done
 
          cd $$cur; \
        done
 
-stats: jm-setup
+postats:       jm-setup
        @LC_ALL=C $(MAKE) stats \
          PO4AFLAGS="$(PO4AFLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR)
 
        @LC_ALL=C $(MAKE) stats \
          PO4AFLAGS="$(PO4AFLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR)
 
-untrans-stats: jm-setup
+untrans-postats:       jm-setup
        @LC_ALL=C $(MAKE) stats \
          PO4AFLAGS="$(PO4AFLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR) \
          2>&1 | grep -vE ' translated messages\.$$'
        @LC_ALL=C $(MAKE) stats \
          PO4AFLAGS="$(PO4AFLAGS)" LANGS="$(LANGS)" -C $(PERKAMON_DIR) \
          2>&1 | grep -vE ' translated messages\.$$'
@@ -116,8 +122,8 @@ help:
        @echo "   release         Generate release from po files"
        @echo ""
        @echo "   update-stats    Update per-page trans stats"
        @echo "   release         Generate release from po files"
        @echo ""
        @echo "   update-stats    Update per-page trans stats"
-       @echo "   stats           Display per-po trans stats"
-       @echo "   untrans-stats   Display per-po trans stats (untrans only)"
+       @echo "   postats         Display per-po trans stats"
+       @echo "   untrans-postats Display per-po trans stats (untrans only)"
        @echo ""
        @echo "   jm-setup        Setup perkamon environment"
        @echo "   clean-setup     Clean perkamon environment"
        @echo ""
        @echo "   jm-setup        Setup perkamon environment"
        @echo "   clean-setup     Clean perkamon environment"
diff --git a/tools/extract-untrans.pl b/tools/extract-untrans.pl
new file mode 100755 (executable)
index 0000000..fa0224d
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/bin/env perl
+
+use File::Basename qw/basename/;
+
+$print_format = 1;
+
+while (<>) {
+    if (/^po4a/) {
+       @dat = split;
+       $cfg = $dat[$#dat];
+       @dat = split('/', $cfg);
+       $poname = $dat[2];
+       $poname =~ s/\.cfg$//;
+       $poname_print = 1;
+    }
+    next if ! /^Discard /;
+    s/\(//;
+    s/\)//;
+    @dat = split(' ');
+    $page = basename($dat[1]);
+    $comp = $dat[2];
+    $all  = $dat[4];
+    $remaining = $all - $comp;
+    $ratio = $comp / $all * 100;
+
+    if ($print_format) {
+       print "# pagename,#complete,#remaining,#all\n";
+       $print_format = 0;
+    }
+    print "$page,$comp,$remaining,$all\n";
+}
similarity index 63%
rename from untrans-list.pl
rename to tools/generate-list.pl
index 6ae2a21..1c3c818 100755 (executable)
@@ -1,5 +1,10 @@
 #!/usr/bin/env perl
 
 #!/usr/bin/env perl
 
+use File::Basename qw/basename/;
+
+$debug = 0;
+$page_count = 0;
+
 sub print_header {
     print <<EOF;
 <HTML>
 sub print_header {
     print <<EOF;
 <HTML>
@@ -21,6 +26,7 @@ EOF
 
 sub print_footer {
     print <<EOF;
 
 sub print_footer {
     print <<EOF;
+<TR><TD COLSPAN=3>Total $page_count pages</TD></TR>
 </TABLE>
 </BODY></HTML>
 EOF
 </TABLE>
 </BODY></HTML>
 EOF
@@ -46,33 +52,29 @@ sub print_manpage {
     print "</TR>\n";
 }
 
     print "</TR>\n";
 }
 
-$poname = "";
-$poname_print = 1;
-
-print_header();
+sub process_postat {
+    my $postat = shift;
+    my $poname = basename($postat);
+    my $poname_print = 1;
 
 
-while (<>) {
-    if (/^po4a/) {
-       @dat = split;
-       $cfg = $dat[$#dat];
-       @dat = split('/', $cfg);
-       $poname = $dat[2];
-       $poname =~ s/\.cfg$//;
-       $poname_print = 1;
+    open(POSTAT, $postat);
+    while (<POSTAT>) {
+       next if /^#/;
+       # format: pagename, #complete, #remaining, #total
+       my ($page, $comp, $remaining, $total) = split(',');
+       $ratio = $comp / $total * 100;
+       if ($poname_print) {
+           print_poname($poname);
+           $poname_print = 0;
+       }
+       print_manpage($page, $total, $remaining, $ratio);
+       $page_count++;
     }
     }
-    next if ! /^Discard /;
-    s/\(//;
-    s/\)//;
-    @dat = split(' ');
-    $page = $dat[1];
-    $comp = $dat[2];
-    $all  = $dat[4];
-    $ratio = $comp/$all*100;
-    if ($poname_print) {
-       print_poname($poname);
-       $poname_print = 0;
-    }
-    print_manpage($page, $all, $all - $comp, $ratio);
 }
 
 }
 
+print_header();
+foreach my $name (@ARGV) {
+    print STDERR "$name...\n" if $debug;
+    process_postat($name);
+}
 print_footer();
 print_footer();