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