Bonjour,

Le journal des changements :

version 0.3
  - add: `stats' command and corresponding manpage
  - add: `clean' command in manpage
  - add: options in manpage
  - remove: alpha debug output
  - remove: `known bug' in manpage
  - bug fix:
    - change: typo in manpage
    - change: use right extensions in warning/error message in `parse_bug'
    - change: warning messages in `parse_bug'

C'est promis, demain et après-demain il n'y aura pas de nouvelle
version.

La commande « stats » fonctionne très bien avec les relectures, pour le
reste je n'ai bien sûr pas pu tester.

La rustine est attachée, le script complet toujours là :
http://perso.wanadoo.fr/nico.bertol/ddts/ddts-script.txt


Nicolas
-- 
--- ddts-script_0.2.3.txt       Sun Dec  2 08:30:00 2001
+++ ddts-script_0.3.txt Mon Dec  3 16:17:10 2001
@@ -55,7 +55,8 @@
 
 =head1 SYNOPSIS
 
-ddts-script [parse|fix|mail|clean]
+ddts-script [-q] [--quiet] [-v] [--verbose n] [-s] [-n] [--mail-self yes|no]
+            parse|fix|mail|clean|stats
 
 =head1 DESCRIPTION
 
@@ -63,6 +64,8 @@
 ddts, splitting them into individual package files, sending reviews and
 patching buggy translations.
 
+=head1 COMMANDS
+
 Here is the basical process if you use this tool:
 
 =over 4
@@ -70,7 +73,7 @@
 =item - Receiving mail from the ddts
 
 Pass the mail you received from the ddts to the standard input of this script,
-providing the I<parse> option.
+providing the I<parse> command.
 
 If it finds descriptions to translate, it creates a F<package.todo> file for
 each of them in your F<tr_dir> directory, diffing it with the preceeding you
@@ -127,13 +130,57 @@
 
 =item - Sending files back to the ddts
 
-Run the script proving the I<mail> option.
+Run the script providing the I<mail> command.
 
 It sends descriptions from F<package.tr> and F<package.rev> files back to the
 ddts renaming them into F<package.sent> and closing bugs if necessary.
 
+=item - Cleaning directories for obsolete files
+
+Run the script providing the I<clean> command.
+
+It removes unnecessary files in ddts directories but temporary one as this
+directory should be a system wide temporary directory cleaned via system
+scheduled threads.
+
+=item - Getting statistics about my work
+
+Run the script providing the I<stats> command.
+
+It prints figures based on file counts, it may not be accurate if directory
+cleaning has not been made before.
+
+=back
+
+=head1 OPTIONS
+
+Verbosity level:
+
+=over 4
+
+=item I<-q>, quiet mode
+
+=item I<-v>, verbose, start at level 1, add more for more verbosity (see below)
+
+=item I<--verbose n>, set verbosity level to I<n> (see below)
+
+=back
+
+Cc mails to one-self:
+
+=over 4
+
+=item I<-s>, send mails also to oneself
+
+=item I<-n>, don't send mails to oneself
+
+=item I<--mail-self yes|no>, send mails to oneself if `yes', don't if `no'
+
 =back
 
+In each option group, options are not compatible, last found option overrides
+previous one.
+
 =head1 CONFIG FILE
 
 This is your F<~/.ddts-script> file, it MUST contain the following variables:
@@ -151,7 +198,7 @@
 
 =item I<$temp_dir>, directory for temporary files
 
-= back
+=back
 
 file extensions (must be different from each other):
 
@@ -219,14 +266,9 @@
 
 level 5 and 9 are really verbose, so direct the output to a file.
 
-=head1 KNOWN BUG
-
-The test for configuration doesn't work with potato, make sure your have
-configured the script and comment it, or send me a patch.
-
 =cut
 
-my $version = "0.2.3";
+my $version = "0.3";
 
 # Test if configuration as been made
 foreach ($tr_dir, $bug_dir, $rev_dir, $temp_dir) {
@@ -655,8 +697,7 @@
                        if ($uu_file eq "$temp_dir/ddts-new-$$") {
                                &parse_translation($package, $langage, 
$description, $translation, $db_translation, $message_id);
                        } elsif ($uu_file eq "$temp_dir/ddts-newreview-$$") {
-                               &parse_review($package, $langage, 
$translator_addr, $description, &uncomment($translation, "## "), $message_id);
-# DDTS 
------------------------------------------------------------------------ 
$translation ------------------
+                               &parse_review($package, $langage, 
$translator_addr, $description, $translation, $message_id);
                        } elsif ($uu_file eq "$temp_dir/ddts-reviewed-$$") {
                                &parse_reviewed($package);
                        } else {
@@ -717,7 +758,7 @@
        my $langage        = shift;
        my $translator     = shift;
        my $description    = shift;
-       my $translation    = &uncomment(shift, "## ");
+       my $translation    = shift;
        my $message_id     = shift;
 
        $debug>2 && print "parse_review\n";
@@ -757,14 +798,9 @@
                                $todo = &get_header("$rev_dir/$package")
                                       ."Description: $description";
                                my @diff = split ("\n", &superdiff($original, 
$reviewed));
-       print "0".$diff[0]."\n";
                                if ($diff[0] =~ /^$comment-/) {
-       print "0".$diff[0]."\n";
-       print "1".$diff[1]."\n";
                                        $diff[0] =~ s/^$comment-//;
                                        $diff[1] =~ s/^$comment\+//;
-       print "0".$diff[0]."\n";
-       print "1".$diff[1]."\n";
                                        $todo .= 
"$comment-Description-$langage\: ".$diff[0]."\n"
                                                
."$comment+Description-$langage\: ".$diff[1]."\n";
                                        shift @diff;
@@ -800,15 +836,15 @@
                $debug>2 && print "    WARNING: collision detected, 
$package.$fix_e exists,\n"
                                 ."             $package skiped\n";
                            warn      "WARNING: collision detected, 
$package.$fix_e exists,\n"
-                                    ."try to remove it and rename 
$package.$bug_e.$old_e into $package.$bug_e.\n"
+                                    ."try to rename it into $package.$bug_e.\n"
                                     ."$package skiped.\n";
                return;
        }
        if (-e "$tr_dir/$package.$tr_e") {
                $debug>2 && print "    WARNING: collision detected, 
$package.$tr_e exists,\n"
                                 ."             $package skiped\n";
-                           warn      "WARNING: collision detected, 
$package.$fix_e exists,\n"
-                                    ."try to remove it and rename 
$package.$bug_e.$old_e into $package.$bug_e.\n"
+                           warn      "WARNING: collision detected, 
$package.$tr_e exists,\n"
+                                    ."try to remove it and rename 
$package.$fix_e.$old_e into $package.$bug_e.\n"
                                     ."$package skiped\n.";
                return;
        }
@@ -817,7 +853,7 @@
                $debug>2 && print "    ERROR: collision detected, 
$package.$sent_e exists,\n"
                                 ."           and has a DIFFERENT 
translation,\n"
                                 ."           $package skiped\n";
-                           warn      "ERROR: collision detected, 
$package.$fix_e exists,\n"
+                           warn      "ERROR: collision detected, 
$package.$sent_e exists,\n"
                                     ."       and has a DIFFERENT 
translation,\n"
                                     ."       $package skiped\n";
                return;
@@ -1274,6 +1310,86 @@
        $debug = $d;
 }
 
+# Print statistics
+sub stats {
+       my    $totr_c = 0;
+       my      $tr_c = 0;
+       my  $senttr_c = 0;
+       my    $oktr_c = 0;
+       my     $bug_c = 0;
+       my     $fix_c = 0;
+       my   $torev_c = 0;
+       my     $rev_c = 0;
+       my $sentrev_c = 0;
+       my   $okrev_c = 0;
+       my  $oldrev_c = 0;
+       my  $allrev_c = 0;
+       
+       $debug>2 && print "stats\n";
+
+       foreach (&ls_dir($tr_dir)) {
+               next         if /^\./;
+                 $totr_c++  if /\.$todo_e$/;
+                   $tr_c++  if   /\.$tr_e$/;
+               $senttr_c++  if /\.$sent_e$/;
+                 $oktr_c++  if   /\.$ok_e$/;
+       }
+       foreach (&ls_dir($bug_dir)) {
+               next         if /^\./;
+               $bug_c++     if /\.$bug_e$/;
+               $fix_c++     if /\.$fix_e$/;
+       }
+       foreach (&ls_dir($rev_dir)) {
+               next         if /^\./;
+                 $torev_c++ if /\.$todo_e$/;
+                   $rev_c++ if  /\.$rev_e$/;
+               $sentrev_c++ if /\.$sent_e$/;
+                 $okrev_c++ if   /\.$ok_e$/;
+                $oldrev_c++ if   /\.$old_e$/;
+                $allrev_c++;
+       }
+       my $myrev_c = $allrev_c-(2*$torev_c)-(2*$sentrev_c)-$okrev_c-$oldrev_c;
+
+       my $sumtr  =  $tr_c +  $senttr_c            +  $oktr_c;
+       my $sumbug = $bug_c +     $fix_c;
+       my $sumrev = $rev_c + $sentrev_c + $okrev_c;
+
+         $rev_c  = $myrev_c - $rev_c;
+       $myrev_c -= 2 * $rev_c;
+       
+       my $l = 0;
+          $l = $_>$l?$_:$l foreach ($sumtr, $sumbug, $sumrev);
+          $l = length $l;
+       if ($sumtr) {
+               print  "===== translations\n";
+               printf "     to do: %${l}d\n",    $totr_c;
+               printf "   to send: %${l}d\n",     $tr_c;
+               printf "      sent: %${l}d\n", $senttr_c;
+               printf "  accepted: %${l}d\n",   $oktr_c;
+               print  "            "."-"x$l."\n";
+               printf "translated: %${l}d\n", $sumtr;
+       }
+
+       if ($sumbug) {
+               print  "===== bug reports\n";
+               printf "   reports: %${l}d\n", $bug_c;
+               printf "     fixed: %${l}d\n", $fix_c;
+               print  "            "."-"x$l."\n";
+               printf "    bugged: %${l}d\n", $sumbug;
+       }
+
+       if ($sumrev) {
+               print  "===== reviews\n";
+               printf "     to do: %${l}d\n",   $torev_c;
+               printf "   to send: %${l}d\n",     $rev_c;
+               printf "      sent: %${l}d\n", $sentrev_c;
+               printf "  reviewed: %${l}d\n",   $myrev_c;
+               printf "  accepted: %${l}d\n",   $okrev_c;
+               print  "            "."-"x$l."\n";
+               printf "  reviewed: %${l}d\n", $sumrev;
+       }
+}
+
 # Parse command line
 my $v = 0;
 my $d;
@@ -1324,17 +1440,20 @@
        &fix;
 } elsif  ($_ eq "clean") {
        &clean;
+} elsif  ($_ eq "stats") {
+       &stats;
 } else {
        my $me = $0;                            # get command name with path
        $me =~ s/.*\/([^\/]*)$/$1/;             # keep script name
        die "Usage: $me [-q] [--quiet] [-v] [--verbose n] [-s] [-n]\n"
-          ."  [--mail-self yes|no] parse|mail|fix|clean\n"
+          ."  [--mail-self yes|no] parse|mail|fix|clean|stats\n"
           ."\n"
           ."commands:\n"
           ."  parse: extract the package descriptions from a ddts mail\n"
           ."  mail:  send mails back to the ddts\n"
           ."  fix:   create a fixed description from bugs\n"
           ."  clean: remove obsolete files\n"
+          ."  stats: print statistics\n"
           ."\n"
           ."options:\n"
           ."  -q, --quiet      quiet mode\n"

Répondre à