#!/bin/bash
#script de démarrage de calfjackhost avec une configuration perso
#	Daniel Génon 20 12 2015  Revin
#
# version 1.0
#	Pour utiliser ce script :
#			- créer un fichier texte avec gedit (par ex) avec le suffixe .clg (ou autre suffixe à votre choix)
#			- le remplir comme suit :
#				ligne 1 : <plugin1>:<preset>
#				ligne 2 : <plugin2>:<preset>
#                               etc...
#				où
#					plugin sera un des termes autorisé par calf :
#						filter, filterclavier, flanger, reverb, monosynth,
#						vintagedelay, organ, rotaryspeaker, phaser,
#						multichorus, compressor
#					preset le nom de preset que vous aurez donné lors des réglages
#					
#			- exemple :
#				filter:monfiltreperso
#				reverb:monreglageamoi
#
#	Placez le script où vous voulez dans le répertoire perso
#
#	Utilisation du script :
#		ouvrir un terminal et lancez la commande
#		demcalf	"<chemin+nomdefichier>"  -> les "..." devant et derriere le paramètres si des espaces existent
#	
#	Après le démarrage, le shell doit rester démarré.
#	
#
# version 2.0 : 03-01-2016  ajout des " de chaque coté de $nomconfig pour accepter les espaces dans les noms de fichiers
#
# version 3.0 : 22-01-2018 :
#		* simplification des verifications de parametres
#	+ lancement par "spawn" afin de permettre a l utilisateur de fermer le terminal
#	+ deport temporel des messages du script apres lancement pour en faciliter la lecture
#
#echo "Ce script permet de démarrer calfjackhost avec une configuration personnelle"

##########################################################
# paramètres
##########################################################
listeargument=
nomconfig=
if [ -n "$1" ];
	then
		nomconfig=$1
fi
#####################################
#
#	Démarrage du shell
#
#####################################
###	teste si calfjackhost est deja lance et abandonne si c est le cas
ps --no-header -C calfjackhost 1>/dev/null && {
	printf "\nErreur: CalfJackHost est deja lance\n"
	exit 1
}

#tester l'existence du fichier config perso
if [ -s "$nomconfig" ];
then
#charger les arguments objets
{	# lecture du fichier config
	# construction de la liste des plugin!preset
	read valtmp
	while [ "$valtmp" != "" ];
	do
		if [ -n "$listeargument" ]
			then
				listeargument=$listeargument' ! '$valtmp
			else
				listeargument=' '$valtmp
		fi
	read valtmp
	done
}<"$nomconfig"
else
	printf "\nErreur: La configuration personnelle n'existe pas ou est inutilisable\n"
	exit 1
fi


###	annonces apres lancement
( sleep 2 && \
	printf "\nArguments de lancement:\n$listeargument\n"
	printf "\n\n\nVous pouvez fermez le terminal si vous le voulez.\n\n\n"  \
) &

###	spawn de calfjackhost
exec /usr/bin/calfjackhost $listeargument & 2>/dev/null
