#!/bin/bash

nom_programme=$1
alias_programme=$2

id=`whoami`
if [[ $id != "root" ]]; then
	echo "Il faut être 'root' pour pouvoir installer l''alias' en /usr/local/bin"
	exit
fi


if [[ $nom_programme == "" ]]; then
	echo 
	echo "Il faut 2 paramètres : 1° = nom du programme existant"
	echo "                       2° = 'alias' désiré du programme"
	exit
else
	# trouver l'exécutable
	chemin_executable=`which $nom_programme 2>&1`
	# 2>&1  : un commande produit un affichage à l'écran "normal" (désigné par "1")
	# 	elle peut aussi produire des messages d'erreur (désigné par "2")
	# 	les 'backquotes' `` ne renvoient normalement que la sortie "normal" (désigné par "1")
	# 	si on veut également les messages d'erreur il faut y ajouter la sortie d'erreur (désigné par "2")
	#	par cette expression : 2>&1

	# vérifier qu'il existe :
	reponse=${chemin_executable/which: */Not found}
	# Quand 'which' donne un message d'erreur, c'est toujours avec une ligne commençant par
	# 	'which: '
	# la suite est variable.
	# Pour standardiser la réponse s'il n'a pas trouvé (et donc qu'il renvoit ce message d'erreur
	# je remplace toute ligne commençant par 'which: ' 
	# (le '*' signifie "n'importe quel string")
	# par le string standard "Not found"
	# par l'opération ${chemin_executable/which: */Not found}
	# et je mets le résultat dans la variable "reponse"
	# la syntaxe ${//} est expliquée dans 
 	#	Advanced Bash-Scripting Guide, An in-depth exploration of the art of shell scripting
	# (lien disponible sur mon site internet)
	if [[ $reponse == "Not found" ]]; then
		echo 
		echo "$nom_programme n'est pas un exécutable dans un des répertoires du \$PATH :"
		echo "     'which $nom_programme' produit ceci :"
		echo $chemin_executable
		exit
	fi
fi

if [[ $alias_programme == "" ]]; then
	echo 
	echo "Il faut un 2° paramètre = 'alias' désiré du programme $chemin_executable"
	exit
else
	# vérifier que n'existe pas déjà
	wap=`which $alias_programme 2>&1`
	reponse=${wap/which: */Not found}
	# standardiser la réponse si pas trouvé
	# (même construction que plus haut)
	
	if [[ $reponse != "Not found" ]]; then
		echo 
		echo "$alias_programme désigne déjà un exécutable dans un des répertoires du \$PATH :"
		echo "     $reponse"
		exit
	fi
fi
	


chemin_script="/usr/local/bin/$alias_programme"
echo "#!/bin/bash" > $chemin_script
# ">" = redirection simple = création/écrasement du fichier
# pour la 1° ligne
echo >> $chemin_script
# ">>" = redirection en ajout au fichier = 'append'
# pour les lignes suivantes
echo "$chemin_executable \$1 &">> $chemin_script
# "\$1" : le "$" doit être "protégé" par un "\" pour écrire littéralement un "$" dans le fichier
# "$1" serait interprété comme le contenu de la variable "1" de ce script-ci
# = 1° paramètre donné au script
# (que j'ai copié dans la variable "nom_programme")

affichage_chmod=`/bin/chmod +x $chemin_script`
affichage_ll=`/bin/ls -l $chemin_script`
if [[ $affichage_chmod == "" ]]; then
	echo 
	echo "Le script bash $chemin_script lançant $chemin_executable a été créé :"
else
	echo 
	echo "Il y eu un problème pour créer le script bash $chemin_script lançant $chemin_executable :"
fi
echo "   $affichage_ll"
echo

exit

