#!/bin/sh

# By Julien MOREAU	( jmoreau@bigfoot.com )		(c) 1999

nbps=1				# Nombre de paramètres souhaités (sans option)
nom_cmde=`basename $0`		# Nom de la commande
usage="Usage: $nom_cmde <start directory>"		# Message d'aide
usage=$usage"\n\tGénère des pages HTML à partir d'un bookmark."
usage=$usage"\nLe répertoire de destination est créé si nécessaire."
usage=$usage"\nAttention! Il est d'abord vidé."

if test `uname` != "HP-UX" ; then e="-e" ; fi

if [ $# -ne $nbps ] ; then	# Si le nombre de paramètres est incorrecte,
	echo $e $usage 1>&2 ; exit 2	# Affichage aide puis arrêt.
fi

typeset -i fl ; fl=0		# File Level
source=$HOME/.netscape/bookmark*
index_end=~moreau_j/bin_pub/.index_end
indname=index.html

if [ ! -r $index_end ] ; then	# Si ce fichier n'est pas lisible,
	echo "Le fichier \"$index_end\" est manquant !" 1>&2 ; exit 4
fi

if [ -w $1 ] ; then	# Si le répertoire de destination existe déjà,
	ouinon "Voulez-vous d'abord détruire le répertoire `basename $1`"||exit
	cd "$1"
	rm -rf *
else
	mkdir "$1"||exit	#  on le crée
	cd "$1"
fi

#pwd ; echo "Touche Entrée pour continuer ? \c" ; read
user=`whoami`
startdir=$PWD
set first $source ; shift
source=$*
indent=""	# Pour indenter
sepa="\t"	# Caractère séparateur

echo $CDPATH|grep -q '\.' || export CDPATH=.:$CDPATH

startind "$PWD" "Bookmarks for `l2n $user`"
echo '<UL>' >> $indname
while read line ; do
	if [ `echo $line|grep '<DL>'`  ] ; then fl=fl+1 ; fi
	title=`echo ${line%%\</*}|grep DT`
	title=${title##*\>}
	rep=`echo "$title"|sed -e 's/\//-/g' -e 's/ /_/g'`
	if [ -n "$rep" ] ; then
		link=""
		echo "$line" | grep HREF > /dev/null
		if [ $? -eq 0 ] ; then
			link="${line#*\"}"
			link="${link%%\"*}"
			echo " <LI><A HREF=\"$link\" TARGET=N>$title</A></LI>" \
				>> $indname
		else	
			link="$rep/$indname"
			echo " <LI><A HREF=\"$link\">$title /</A></LI>" \
				>> $indname
			mkdir "$rep" || exit
			cd "$rep" || exit

			indent="$sepa$indent"
			echo "$indent$title"	# Contrôle de progression
			titre=`echo "${PWD##$startdir/}"|sed -e 's/_/ /g'`
			startind "$PWD" "$titre"
			echo "<UL>" >> $indname
		fi
	fi
	if [ `echo $line|grep '</DL>'` ] ; then
		fl=fl-1
		if [ $fl -lt 0 ] ; then
			echo "File level=$fl !" 1>&2 ; exit 9
		fi
		indent=`echo $indent|sed "s/^$sepa//"`
		cat $index_end >> $indname ; cd ..
	fi
done < $source

exit 0		# Sortie sans erreur

