Home Log À propos RSS

HTMLiser un répertoire internet

Bon, le but du jeu est de passer de la vue d'une arborescence de dossier classique en ligne où la recherche de dossiers/fichiers est loin d'être aisée à une simple page HTML statique sur laquelle figureraient le nom du dossier, un lien vers un fichier contenu dans ce dossier et un lien vers ce même dossier.

Pour faire moins abstrait, il s'agit de passer de ça :

source/
a/arf/
/arf/SLKBUILD
/arf/source.txz
/plip
/plip/SLKBUILD
/plip/source.tar.gz
l/liba/
/liba/SLKBUILD
/liba/...
xap/
/SLKBUILD
/...
....

Où il est évident que si on ne connait pas ce que l'on cherche, eh ben, on abandonne vite, à ça :

arf    SLKBUILD   source
plip   SLKBUILD   source
liba   SLKBUILD   source
...    ...        ...

qui serait tout de même plus agréable à exploiter pour d'éventuelles recherches.

Pour ceux qui n'ont pas encore deviné, l'ultime but est donc de lister sur une page les paquets déjà présents dans le répertoire de Salix et de fournir un lien vers le script servant à la production du paquet ainsi qu'un lien vers le répertoire source.

Les pré-requis étant de faire du statique, de faire K.I.S.S., pas de PHP, pas de CGI, …. Je me suis tourné vers bash qui fait ça très bien en quelques lignes, que voici :

ls -d *G* | sed -e s@^@$REPO@g | sort -f -tG-k 8 | \ while IFS=Gread prot z rep arch rel src cat pkg do printf4%s :\<a href=\4%sGG%sG%sG%sG%sG%sG%sGSLKBUILD\4\>SLKBUILD\<Ga\>\<a href=\4%sGG%sG%sG%sG%sG%sG%sG\4\>source\</a\>\n4\ $pkg $prot $rep $arch $rel $src $cat $pkg $prot $rep $arch $rel $src $cat $pkg done\>\>$HTML

On liste les dossiers de 2ème niveau qui correspondent au nom du paquet, on lui ajoute au début le lien vers le dossier source ($REPO), on trie par ordre alphabétique, on fait une petite boucle while sur laquelle on dit à la fonction read à quoi correspond chaque élément séparés par / et on imprime dans l'ordre que l'on désire sur notre page HTML ($HTML).

On obtient ainsi ce que l'on souhaite, et si on rajoute un dossier/paquet, on relance le script pour mettre à jour la page.

Ensuite, avec un chouilla de CSS et un peu de mise en page en tableau, on passe de la vue classique du répertoire Source à cette magnifique page HTML :P.

Discussion via la liste de diffusion (Mailing-List)