4/09/2014

Inform7 et Gedit (v2)

J'ai eu le temps de retravailler un peu sur ma fiction interactive. J'ai donc pas mal tout réécrit mon wrapper de compilation pour i7 (dont je parlais ici).

La grosse différence, c'est qu'il est maintenant possible de lancer une compilation pendant qu'un interpréteur roule. Ça va fermer l'interpréteur, effacer le fichier compilé, puis tout recommencer. Pas de message d'erreur agaçant. Yé.

Ce n'est pas parfait (le pid peut pointer à un autre process complètement si je ferme manuellement l'interpréteur et que beaucoup de temps se passe entre deux compilations), mais pour l'instant, c'est ça.


----------------------------------------------

#!/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 ];
# If the output already exists, delete it
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 () {
# Compilation de la fiction interactive
if [ -e $pid_file ];
then kill `cat $pid_file` > /dev/null 2>&1 && clean_up
fi

i7 -s zcode=$format -c ../  > /dev/null 2>&1 &&

# Si la compilation fonctionne
if [ -e $output ];
# Ouvrir le .z5 (ou autre format) avec l'interpréteur
then $interpreteur $output & echo $! > $pid_file
# Sinon, afficher le message d'erreur
else $fureteur$msg_erreur > /dev/null 2>&1
fi
}

compile_i7

2 commentaires: