Sourcer le fichier .twsrc en utilisant l'alias use_web. A defaut, utiliser la commande :
. /Web/tools/.twsrc
La mise a jour de toute l'arborescence necessite plusieurs passes successives :
Pour eviter de transformer les .txt en .html en dessous d'un repertoire, creer le fichier .keep dans ce repertoire avec :
touch .keep
Tous les repertoires en-dessous de ce repertoire seront exclus de la liste des repertoires a traiter.
Pour les repertoires simples, il y a peu d'interet a ecrire a la main un fichier index.txt. Ou pire : un fichier index.html...
Pour generer automatiquement le fichier index.html dans ces repertoires, creer le fichier index.auto dans ce repertoire avec :
touch index.auto
En l'absence de fichier index.html, le serveur HTTP affiche une vue complete de tous les fichiers du repertoire, avec un titre par defaut : Index of nom_du_repertoire. Le navigateur utilise la mise en page basique, correspondant a l'affichage d'un fichier ASCII ou d'une page correspondant a un URL de type ftp.
Si le fichier .header est present dans ce repertoire, le serveur HTTP utilise son contenu en guise de titre, et affiche . Si le fichier .header.html est present, la mise en page devient celle du fichier .header.html.
Si le repertoire n'est pas protege par une directive .keep, le fichier .header est automatiquement transforme en fichier .header.html.
Si ce fichier est present dans un repertoire, il sera affiche en bas de page si et seulement si le fichier index.html n'existe pas.
Si le repertoire n'est pas protege par une directive .keep, le fichier .footer est automatiquement transforme en fichier .footer.html.
Comme il est preferable de generer automatiquement les index, ce fichier n'a d'utilite que pour les repertoires qui doivent etre affiches en mode liste. Par exemple, une arborescence de programmes binaires, sur lesquels il suffit de cliquer pour qu'ils soient sauves en local sur le poste de consultation.
Le fichier Makefile contient LA regle qui permet de generer un fichier .html a partir d'un fichier .txt.
%.html : %.txt $(FORCE) @$(WEBTOOLS)/txt2html.sh $< @-$(CHOWN) $@
Il contient egalement une regle similaire pour la conversion des fichiers .rtf en fichiers .html, ainsi qu'une dependance pour verifier que le tableau associatif des arborescences a traiter est bien a jour.
Au passage, on s'offre la transformation automatique des fichiers .rtf en fichiers .html, grace a l'utilitaire rtf2html. Le resultat n'est pas parfait, mais c'est toujours mieux que rien. rtf2html a tout de meme la bonne idee de creer un fichier ToC ("Table of Contents"), qui peut servir d'intermediaire de navigation. Le TOP serait une segmentation automatique du fichier en petits fichiers .html avec barre de navigation. Si vous avez l'inspiration...)
La commande make est lancee par l'utilitaire make_html_files.pl, pour chaque repertoire non protege trouve dans la liste megalist_of_dirs.
La transformation se fait en trois etapes :
Le fichier footer.html.template contient le pied de page par defaut, utilise par deux utilitaires :
La table des jobs automatiques (le crontab du compte root) de bunny.pf contient une ligne qui lui indique qu'il faut lancer make_everything_but_coffee.sh chaque nuit :
0 1 * * 1-5 /Web/tools/make_everything_but_coffee.sh
Le script make_everything_but_coffee.sh se charge d'appeler tous les autres, dans le bon ordre, pour mettre a jour toute l'arborescence Intranet.
Il commence par effacer les fichiers d'erreurs :
Puis il lance les scripts :Pour les options, aller aux chapitres 5.1 et 5.2.
Ce script est appele via le Makefile, si le fichier ASCII list_of_trees_to_browse des arborescences a traiter a ete mis a jour.
La mise de ces arborescences dans un tableau associatif semble luxueuse, mais il suffit de comparer le temps de traitement du fichier ASCII et de l'acces direct dans le HASH ARRAY pour comprendre. D'autant plus que tous les autres scripts utilisent ces informations : il serait stupide de decortiquer l'ASCII a chaque execution.
Le script get_unprotected_dirs.pl cherche TOUS les repertoires de l'arborescence, puis TOUS les repertoires qui contiennent la directive .keep.
Il utilise cette derniere liste pour soustraires les repertoires (et les sous repertoires) de la liste principale : files/megalist_of_dirs.
Le script make_html_files.pl parcours tous les repertoires non proteges, et y lance la commande make -f $WEBTOOLS/Makefile.
Les fichiers .html sont generes automatiquement par le script txt2html.sh si les fichiers .txt correspondants sont plus recents, ou bien si la version .html n'existe pas.
Si un ou plusieurs liens ne sont pas resolus, le nom du fichier est ajoute a la liste des fichiers a probleme qui auront droit a une deuxieme chance : log_unresolved. Il faut d'abord creer tous les fichiers .html potentiels, meme incomplets, pour que le script make_web_files.pl puisse les repertorier.
La commande make est passee avec l'option OWNER=proprietaire_arborescence, afin que les fichiers crees puissent etre effaces si necessaire par le proprietaire des lieux...
Le script make_txt2html_files.pl genere la liste de TOUS les fichiers de l'arborescence, y compris les fichiers des repertoires proteges.
A partir de cette liste, il genere quatre tableaux associatifs:
Le scipt try_again_make_html_files.pl parcours la liste de tous les fichiers dans lesquels il y a eu des problemes avec la resolution automatique des liens : log_unresolved.
Ce script permet de resoudre la creation simultanee de plusieurs fichiers .txt, qui se font reference :
Le script make_index_files.pl parcours tous les repertoires non proteges, et y lance la commande make -f $WEBTOOLS/Makefile index.html.
Le target index.html correspond a une directive qui declenche la generation du fichier si la date de derniere modifocation du repertoire est plus recente que la date de index.html. En clair, si il se passe quelquechose dans le repertoire, on refait un index au cas ou.
La commande make est passee avec l'option OWNER=proprietaire_arborescence, afin que les fichiers index.html puissent etre effaces si necessaire par le proprietaire des lieux...
Reservee a root, cette option permet d'effacer les fichiers megalist_of_XXXXX, et de refaire une mise a jour de tout ce qui est disponible, par exemple apres la modification de la liste de arborescences list_of_trees_to_browse.
Reservee egalement a root, l'option force fait un patch dans le fichier Makefile :
sed s/^FORCE=.*$/FORCE=force/ < $WEBTOOLS/Makefile > $WEBTOOLS/Makefile2 mv $WEBTOOLS/Makefile2 $WEBTOOLS/Makefile
La target force est vide, mais cela suffit pour provoquer a coup sur la regle :
%.html : %.txt $(FORCE) @$(WEBTOOLS)/txt2html.sh $< @-$(CHOWN) $@
En clair, cette option garantit que TOUS les fichiers .html qui sont generes a partir de .txt seront refait a neuf.
Ca prend un certain temps, mais ca permet aussi de faire la chasse aux problemes :
Le patch FORCE=force disparait a l'execution suivante de make_everything_but_coffee.sh.Pour une execution au coup par coup, utiliser la commande forcehtml.
Si vous sourcez le fichier .twsrc, et que votre SHELL accepte les aliases, vous heritez de :