5/14/2014

Inform et Gedit (v3)

C'est (fort probablement) la dernière version, juré, promis, juré.

Mis à part un petit hack avec la façon d'obtenir le pid, je suis satisfait, et ça fait exactement ce que je veux, à savoir fermer l'interpréteur roulant un output précédant avant d'en ouvrir une autre instance avec la nouvelle version de l'output, sans jamais risquer de tuer un process au hasard.

Voilà donc.

--------

#!/bin/sh

#############################################
#
# Go (Inform)
# Script pour compiler une fiction,
# la jouer dans une intepréteur si
# la compilation fonctionne, ou afficher
# les messages d'erreur en cas d'échec.
#
##############################################

cd "$GEDIT_CURRENT_DOCUMENT_DIR/"

# Par défaut, le format est z8. 
format=8

interpreteur=gargoyle-free
fureteur="midori --app="
output=../Build/output.z$format
msg_erreur=../Build/Problems.html
pid_file=.pid

clean_up () {
if [ -e $output ];
then rm $output > /dev/null 2>&1
fi
if [ -e $pid_file ];
then rm $pid_file > /dev/null 2>&1
fi
# Ce dossier est créé automatiquement,
# j'ignore pourquoi. Vidanges.
rm -R ". Materials/" > /dev/null 2>&1
}

compile_i7 () {
# Si le ficher pid_file existe, c'est qu'un autre 
# interpréteur roule en ce moment. Il faut le tuer 
# et faire le ménage avant la compilation.
if [ -e $pid_file ];
then kill `cat $pid_file` > /dev/null 2>&1 && clean_up
fi
# Compilation de la fiction interactive
i7 -s zcode=$format -c ../  > /dev/null 2>&1 &&

# Si la compilation fonctionne, output existe
if [ -e $output ];
# Ouvrir le .z5 (ou autre format) avec 
# l'interpréteur.
# *HACK*. C'est pas joli, mais il faut
# ajouter 1 au pid pour pointer vers 
# le vrai process.
then ($interpreteur $output  > /dev/null 2>&1 && clean_up) & echo $(($! + 1)) > $pid_file

else $fureteur$msg_erreur > /dev/null 2>&1
fi
}

compile_i7

Aucun commentaire:

Publier un commentaire