#!/usr/bin/perl

$nom_fichier_liste = shift;
# 1° paramère à la ligne de commande
chomp $nom_fichier_liste;
# enlever le passage à la ligne (= \n = newline) s'il existe

if ($nom_fichier_liste eq "") {
	$nom_fichier_liste = "/usr/local/etc/raf_liste";
	# valeur par défaut
	print "Utilisation du nom de fichier par défaut $nom_fichier_liste\n";
}
# le fichier $nom_fichier_liste doit contenir un couple 
# $nom_programme $alias_programme
# séparés par un espace dans chaque ligne

if ( ! -f $nom_fichier_liste ) {
	print "$nom_fichier_liste n'existe pas dans le répertoire\n";
	exit;
}

$id = `whoami`;
chomp $id;
if ($id ne "root") {
	print "Il faut être 'root' pour pouvoir installer des 'alias' en /usr/local/bin\n";
	exit;
}

open(LISTE, "<$nom_fichier_liste");
while (<LISTE>) {
	chomp;
	# enlever le passage à la ligne (= \n = newline) s'il existe (ce qui est le cas ici)
	($nom_programme, $alias_programme) = split;
	# partager le string (par défaut) $_ en composantes d'un vecteur
	# avec comme sépérateur (par défaut) un espace
	# affecter directement la 1° composante du vecteur à la variable $nom_programme
	# et affecter directement la 2° composante du vecteur à la variable $alias_programme
	# (si jamais il y avait plus de composantes, on ne s'en occupe pas et ça n'a pas d'importance)
	$ligne++;
	# incrémenter la variable $ligne, non déclarée, comme toutes les autres, 
	# mais ici son initialisation importe :
	# comme on l'incrémente elle est considérée comme un nombre, et donc initialisée à 0
	# lors du 1° passage dans la boucle while elle vaut donc 1 à cet endroit-ci

	if ($nom_programme eq "") {
		print "\nA la ligne numéro $ligne du fichier $nom_fichier_liste :\n";
		print "$_\n";
		print "Il faut 2 paramètres (séparés par un espace) par ligne:\n";
		print "	1° = nom du programme existant\n";
		print "	2° = 'alias' désiré du programme\n";
		next;
		# passer à la passe suivante du while, donc à la ligne suivante
	} else {
		# trouver l'exécutable
		$chemin_executable = `which $nom_programme 2>&1`;
		# ajouter la sortie erreur (2) à la sortie standard (1)
		$chemin_executable =~ s/which: .*/Not found/;
		# standardiser la réponse si pas trouvé
		chomp $chemin_executable;
		# vérifier qu'il existe
		if ($chemin_executable eq "Not found") {
			$not_in_path .= "$nom_programme\n";
			next;
			# passer à la passe suivante du while, donc à la ligne suivante
		}
	}
	
	if ($alias_programme eq "") {
		print "\nA la ligne numéro $ligne :\n";
		print "$_\n";
		print "\nIl faut un 2° paramètre = 'alias' désiré du programme $chemin_executable\n";
		next;
		# passer à la passe suivante du while, donc à la ligne suivante
	} else {
		# vérifier que n'existe pas déjà
		$test_alias = `which $alias_programme 2>&1`;
		# ajouter la sortie erreur (2) à la sortie standard (1)
		$test_alias =~ s/which: .*/Not found/;
		# standardiser la réponse si pas trouvé
		chomp $test_alias;
	#	print "chemin_executable=$test_alias\n";
	
		if ($test_alias ne "Not found") {
			$already_installed .=  "$alias_programme \t= $nom_programme\n";
			next;
			# passer à la passe suivante du while, donc à la ligne suivante
		}
	}
	
	$chemin_script = "/usr/local/bin/$alias_programme";
	open(SCRIPT, ">$chemin_script");
	print SCRIPT "#!/bin/bash\n\n";
	print SCRIPT "$chemin_executable \$1 &\n";
	close SCRIPT;
	
	$affichage_chmod = `/bin/chmod +x $chemin_script`;
	$affichage_ll = `/bin/ls -l $chemin_script`;
	if ($affichage_chmod eq "") {
		print "\nLe script bash $chemin_script lançant $chemin_executable a été créé :\n";
	} else {
		print "\nIl y eu un problème pour créer le script bash $chemin_script lançant $chemin_executable :\n";
	}
	print "   $affichage_ll\n";

}
close LISTE;
print "\nDéjà installés :\n";
print $already_installed;
print "\nPas dans path :\n";
print $not_in_path;
print "\n";
exit;
