#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;
use Sys::RunAlone;
use List::Util qw(shuffle);
use Ernad::Learn;

my $impna = $ARGV[0] // die "no impna";

my $max_updates = $ARGV[1] // '0';
if($max_updates == 0) {
  print "You have given me no number of models to update.\n";
  exit;
}

my $l=Ernad::Learn->new({'impna' => $impna,
                         'verbose' => 1});
my $e=$l->{'e'};
my @repcodes=$e->list_repcodes;

## first look: count_models
my $count_models;
my $max_models=0;
foreach my $repcode (shuffle @repcodes)  {
  my $model_glob=$l->{'mocla_dir'}.'/'.$repcode.'/*.model';
  my @models=glob($model_glob);
  $count_models->{$repcode}=scalar(@models) // 0;
  if($count_models->{$repcode}>$max_models) {
    $max_models=$count_models->{$repcode};
  }
  #$l->{'d'}->model_report($repcode);
}

my $min_models=$max_models;
foreach my $repcode (shuffle @repcodes)  {
  if($count_models->{$repcode} < $min_models) {
    $min_models=$count_models->{$repcode};
  }
}

foreach my $repcode (shuffle @repcodes)  {
  if($count_models->{$repcode} > $min_models) {
    delete $count_models->{$repcode};
  }
}

my $count_renewals=0;
foreach my $repcode (shuffle @repcodes)  {
  if($count_renewals++ > $max_updates) {
    exit;
  }
  my $fitport=&Ernad::Learn::Common::get_fitport($l,$repcode);
  if(not defined($l->{'m'}->{$fitport})) {
    $l->{'m'}->{$fitport}=Ernad::Learn::Dokli->new({'impna' => $l->{'impna'},
                                                    'e'=> $l->{'e'},
                                                    'verbose'=> $l->{'verbose'}});
  }
  $l->{'m'}->model_report($repcode);
}



print Dumper $count_models;




__END__;
