#!/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 &copy; 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}/µ1µ/g" "$I" >> "$I.tmp.1"
		sed "s/a href=${File_sed}/µ2µ/g" "$I.tmp.1" >> "$I.tmp.2"
# 	les fichier reference mais qui commencent pareil.
		sed "s/>$File_sed/µ3µ/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/µ3µ/>$File_sed/g" "$I.tmp.4" >> "$I.tmp.5"
		sed "s/µ2µ/a href=${File_sed}/g" "$I.tmp.5" >> "$I.tmp.6"
		sed "s/µ1µ/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
