# mode d'emploi : 
# args = le répertoire-but, le chemin du fichoer d'interface, le nom de la classe
# jfp% perl build.pl chose "../../ArbExp.h" ArbExp
# ou de préférence 
# jfp% perl build.pl chose "/Users/jfp/FromIris/Ling/_Écritures/INaLCO/cours08/Automates/AnSynt/ArbExp.h" ArbExp
# --------------------------------------------------------------------------------

use strict;
use warnings;
use File::Copy;

sub maj($$){ # un nom de fichier & un chemin absolu
   my ($nomfich, $chemin) = @_;
   open(ENTREE, "<$nomfich");
   my @buf;
   my $ligne;
   while( $ligne = <ENTREE> ){
   	   $ligne =~ s/MesArbres/$chemin/g;
   	   push(@buf, $ligne);
   }
   close(ENTREE);
   open(SORTIE, ">$nomfich");
   map( { print(SORTIE $_) } @buf );
   close(SORTIE);
} #maj

sub majt($$){ # un nom de fichier & un nom de classe
   my ($nomfich, $cls) = @_;
   open(ENTREE, "<$nomfich");
   my @buf;
   my $ligne;
   while( $ligne = <ENTREE> ){
   	   $ligne =~ s/MaClasse/$cls/;
   	   push(@buf, $ligne);
   }
   close(ENTREE);
   open(SORTIE, ">$nomfich");
   map( { print(SORTIE $_) } @buf );
   close(SORTIE);
} #majt


sub build($$$){ # un répertoire-but, un chemin absolu & un nom de classe
   my ($nombut, $chemin, $cls) = @_;
   
   $chemin =~ s/\.h//;
   
#   recopier le rep "src"  dans le rép. but
   mkdir($nombut);
   my @fich = ("couper.pl", "explexer.h", "expparser.h", "inserer.pl", "makefile");
   map( {copy("src/$_", "$nombut/$_")} @fich );
  
   maj("$nombut/explexer.h", $chemin);
   maj("$nombut/expparser.h", $chemin);
   maj("$nombut/makefile", $chemin);
   majt("$nombut/expparser.h", $cls);
}#build
   
   
build ($ARGV[0], $ARGV[1], $ARGV[2]);