#!/bin/bash
#
# Seul les script destinés a la publication sont authorisé en fichiers cachés (.*)
# executer le script sur le repertoire racine des fichiers a coloriser.
#
# Si un repertoire est donné en arg on le traite sinon on traite le repertoire courant.
SOURCE=$1
PAGE=config.php
if [ -z "$SOURCE" ]
then
SOURCE="."
fi
cd $SOURCE
URL=`pwd |sed "s/.*public_html[a-zA-Z_]*\//\//"`
# on efface les html déjà existants.
LIST=`find $SOURCE -type f|grep "\(\.tmp\..\|\.html\)$"`
if [ "$LIST" ]
then
echo "Effacement de :
$LIST"
rm $LIST
fi
# LIST=`ls -A |sort -r` |grep "[^\.]\/"
DOSSIERS=`find $SOURCE -type d`
function color_rep () {
if [ $2 ]
then
echo -e "</ul><h2>$2</h2><ul>
" >> $PAGE
fi
for FICHIER in $1
do
# filtrage des adresses mail dans les fichiers de conf pour eviter les spam.
sed "s/@[-+_a-zA-Z0-9=]\+/@nospam/g" "$FICHIER" > ${FICHIER}.tmp
sed "s/\(:\/\/.*:\).*@/\1XXXXX@/g" "${FICHIER}.tmp" > $FICHIER
rm ${FICHIER}.tmp
# transformation en html.
vim +f +"syntax on" +"so $HOME/bin/2html.vim" +"wq" +"q" "$FICHIER"
# on enleve le ^. du fichier pour qu'il ne soit plus caché.
FICHIER_NEW=`echo "$FICHIER"| sed "s/\/\./\//"`
# echo "$FICHIER => $FICHIER_NEW"
# Si il faut renomer l'html pour qu'il soit visible.
if [ "$FICHIER_NEW" != "$FICHIER" ]
then
# if [ ! -f "${FICHIER_NEW}.html" ]
# then
echo moving ${FICHIER}.html to ${FICHIER_NEW}.html
mv ${FICHIER}.html ${FICHIER_NEW}.html
fi
echo -e "<li><a href=\"${FICHIER_NEW/\.\//<?=\$rep?>/}.html\">${FICHIER_NEW/\.\//}</a></li>\n" >> $PAGE
done
}
echo "
<h1>Config</h1>
Voici quelques fichiers de config et script que j'utilise :
<ul>" > $PAGE
for DOSSIER in $DOSSIERS
do
if [ "$DOSSIER" = "." ]
then
color_rep "`find $SOURCE -type f|grep -v "\(\.html\|\.swp\)$" | grep -v "\.\/.*\/.*"`" $DOSSIER
else
color_rep "`find $SOURCE -type f|grep -v "\(\.html\|\.swp\)$" | grep "$DOSSIER"`" $DOSSIER
fi
done
echo -e "</ul>
<div class=\"conteneur foot\">
<hr noshade=\"noshade\" width=\"90%\" />
<div class=\"left\">
<a href=\"colorize.sh\">Télécharger colorize.sh</a>
</div>
<div class=\"right\">
<a href=\"http://www.gnu.org/licenses/gpl.txt\">Copyright © 2002 </a>
<a href=\"mailto:michoux AT born2frag DOT org?subject=[colorize.sh]\">Sébastien MICHEL</a>
</div>
</div>
" >> $PAGE
echo "Mise en place des links dans les fichiers html";
# # Files=`ls -A -I*.html|sort -r`
# le sort -r permet de gere les lien vers toto.titi alors que toto existe:
# avec le sort -r on traite d'abord toto.titi puis après toto.
# Sans le sort -r toto aurai cree son lien avec <a href="blaba">toto</a>.titi
Files=`find $SOURCE -type f|grep -v "\(\.html\|\.swp\)$"|sort -r`
for File in $Files
do
echo "****************** $File ******************"
# liste de tout les fichiers sauf le courant.
Others=`echo "$Files"|sed "s/${File//\//\\\/}\( \|$\)//"`
# $file.html
Link="`echo "$File"| sed "s/\/\./\//"`.html"
echo Lien : $Link !
echo Tous : $Files !
# echo Les autres : $Others !
# ajouter l'extension .html a tout les membres de la liste other et enlever le . des .*
Others=`echo $Others|sed "s/\( \|$\)/.html /g;s/\/\./\//g"`
echo Les autres : $Others !
echo "File : $File => ${File/.*\//} !"
File_sed=${File/.*\//}
Link=${Link/\./${URL}}
Link_sed="${Link//\//\\/}"
echo "mise au point du lien $File_sed vers $Link_sedet on evite:
a href=${Link_sed%.html}
>$File_sed"
for I in $Others
do
# sed "s`grep -n body $Link|cut -d\":\" -f 1`~1/$File/<a href=$Link>$File<\/a>/g" "$I" >> "$I.tmp"
# sed "s/$File/<a href=$Link>$File<\/a>/g" "$I" >> "$I.tmp"
# soluce bourine pour eviter les construction de lien sur:
# Les ref elle meme
sed "s/a href=${Link_sed%.html}/a href=/config/X/xsession/g" "$I" >> "$I.tmp.1"
sed "s/a href=${File_sed}/a href=.xsession/g" "$I.tmp.1" >> "$I.tmp.2"
# les fichier reference mais qui commencent pareil.
sed "s/>$File_sed/>.xsession/g" "$I.tmp.2" >> "$I.tmp.3"
# enfin on peut creer le nouveau lien
sed "s/$File_sed/<a href=$Link_sed>$File_sed<\/a>/g" "$I.tmp.3" >> "$I.tmp.4"
# et remettre les anciens liens comme avant.
sed "s/>.xsession/>$File_sed/g" "$I.tmp.4" >> "$I.tmp.5"
sed "s/a href=.xsession/a href=${File_sed}/g" "$I.tmp.5" >> "$I.tmp.6"
sed "s/a href=/config/X/xsession/a href=${Link_sed%.html}/g" "$I.tmp.6" >> "$I.tmp"
# effacer tout les fichiers temporaires....
rm $I.tmp.*
#... sauf le .tmp qui est le resultat.
mv $I.tmp $I
done
done