changeset 356:102ac4f0bd22 misc

Make findreqs.pl more forgiving to inaccuracies in log data.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 27 Jun 2018 14:57:20 +0300
parents 6f4baa8abf82
children b5959a81c3f5
files nun/tasks/findreqs.pl
diffstat 1 files changed, 30 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/nun/tasks/findreqs.pl	Wed Jun 27 14:40:27 2018 +0300
+++ b/nun/tasks/findreqs.pl	Wed Jun 27 14:57:20 2018 +0300
@@ -2,11 +2,13 @@
 use strict;
 use warnings;
 my %taskList = ();
+my %taskNames = ();
 my @tmpList = ();
 my $wasFound = 0;
 my $n;
 my $nline = 0;
 
+
 ### Process and parse input logfile
 while (defined(my $line = <STDIN>))
 {
@@ -21,22 +23,24 @@
   }
   elsif ($line =~ /^You now have '(.+)' at ([0-9]+)\% without special bonuses\.$/ && $wasFound)
   {
-    my $tmpName = $1;
+    my $tmpName = lc($1);
     my $tmpPercentage = $2;
     $n = 10;
 
     for my $taskName (@tmpList)
     {
-      if (defined($taskList{$taskName}{$tmpName}))
+      my $lcName = lc($taskName);
+      if (defined($taskList{$lcName}{$tmpName}))
       {
-        if ($tmpPercentage < $taskList{$taskName}{$tmpName})
+        if ($tmpPercentage < $taskList{$lcName}{$tmpName})
         {
-          $taskList{$taskName}{$tmpName} = $tmpPercentage;
+          $taskList{$lcName}{$tmpName} = $tmpPercentage;
         }
       }
       else
       {
-        $taskList{$taskName}{$tmpName} = $tmpPercentage;
+        $taskList{$lcName}{$tmpName} = $tmpPercentage;
+        $taskNames{$lcName} = $taskName;
       }
     }
   }
@@ -46,9 +50,11 @@
     $wasFound = 0;
     for my $taskName (@tmpList)
     {
-      if (!defined($taskList{$taskName}))
+      my $lcName = lc($taskName);
+      if (!defined($taskList{$lcName}))
       {
-        $taskList{$taskName} = ();
+        $taskList{$lcName} = {};
+        $taskNames{$lcName} = $taskName;
       }
     }
     @tmpList = ();
@@ -62,6 +68,13 @@
 }
 
 
+sub print_line($$$)
+{
+  my ($task, $skill, $perc) = @_;
+  printf "| %-36s | %-25s | %3d |\n", $task, $skill, $perc;
+}
+
+
 ### Print out the results
 $n = 0;
 if ($#ARGV >= 0) {
@@ -69,7 +82,7 @@
   {
     for my $taskName (sort keys %taskList)
     {
-      print $taskName."\n";
+      print $taskNames{$taskName}."\n";
     }
   }
   elsif ($ARGV[0] eq "-dump")
@@ -87,7 +100,7 @@
 }
 else
 {
-  my $sepLine = 0;
+  my $separator = 0;
   print  ",------------------------------------------------------------------------.\n";
   print  "| Task name                            | Skill/spell               | Min |\n";
   print  "+--------------------------------------+---------------------------+-----+\n";
@@ -98,29 +111,29 @@
     if ($nreqs == 0)
     {
       # No requirement data for task
-      print_separator() if ($sepLine);
+      print_separator() if ($separator);
       printf "| %-36s | %-31s |\n", $taskName, "UNKNOWN or no requirements";
       print_separator();
-      $sepLine = 1;
+      $separator = 1;
     }
     elsif ($nreqs == 1)
     {
       for my $skillName (sort keys %{$taskList{$taskName}})
       {
-        printf "| %-36s | %-25s | %3d |\n", $taskName, $skillName, $taskList{$taskName}{$skillName};
+        print_line($taskNames{$taskName}, $skillName, $taskList{$taskName}{$skillName});
       }
-      $sepLine = 1;
+      $separator = 1;
     }
     else
     {
-      print_separator() if ($sepLine);
-      printf "| %-70s |\n", $taskName;
+      print_separator() if ($separator);
+      printf "| %-70s |\n", $taskNames{$taskName};
       for my $skillName (sort keys %{$taskList{$taskName}})
       {
-        printf "| %-36s | %-25s | %3d |\n", "", $skillName, $taskList{$taskName}{$skillName};
+        print_line("", $skillName, $taskList{$taskName}{$skillName});
       }
       print_separator();
-      $sepLine = 0;
+      $separator = 0;
     }
 
     $n++;