#!/bin/sh

#
# htg2html
#
# But : convertit toute une arborescence HTG en une arborescence HTML
#
# Syntaxe :
#    htg2html [-l] rep-sources-htg rep-temporaire rep-destination-html
#
# Entree :
#   - option -l : fait un lien symbolique vers les fichiers non HTG
#   - rep-sources-htg : repertoire des textes HTG (et autres fichiers
#	recopies purement et simplement)
#   - rep-temporaire : repertoire temporaire
#   - rep-destination-html : repertoire de destination
#
# Sortie :
#   - sortie standard : messages d'erreur et fichiers en erreur
#   - repertoire de destination : peupl avec les fichiers convertis
#
# Historique
#   1998/12/10 : pda : adaptation d'un Makefile+script particuliers
#   1999/07/13 : pda : paramtrage de la localisation de HTG
#   1999/07/13 : pda : conservation des dates des fichiers
#   1999/07/27 : pda : affiche le nom du fichier seulement en cas d'erreur
#   2000/06/07 : pda : protection contre les noms de fichiers avec des espaces
#   2001/11/26 : pda : ajout de l'option "-l" pour lier les fichiers non htg
#

#
# Localisation des lments de HTG
#

HTGDIR=/local/services/www/htg
HTG="$HTGDIR/src/htg -d $HTGDIR/modeles"

#
# Mode verbeux ou non (affichage de tous les fichiers traits)
# Dcommenter l'une ou l'autre des deux lignes "VERBOSE=" suivantes :
#

#VERBOSE=echo				# afficher tous les fichiers
VERBOSE=:				# commande nulle : ne rien afficher

# set -x

#
# Cration des rpertoires de l'arborescence source vers l'arborscence
# temporaire.
#

repertoires ()
{
    wsrc=$1
    wobj=$2
    (
	cd $wsrc
	find . -type d -print
    ) |
	while read d
	do
	    if [ ! -d $wobj/$d ]
	    then
		mkdir -p $wobj/$d
	    fi
	done
}

#
# Initialise la date d'un fichier  une date de rfrence
#

copie_date ()
{
    touch -r "$1" "$2"
}

#
# Copie des fichiers "non-htgt" vers l'arborescence temporaire.
#

autres ()
{
    link=$1
    wsrc=$2
    wobj=$3
    (
	cd $wsrc
	find . -type f -print
    ) |
	grep -v '.htgt$' | 
	while read f
	do 
	    $VERBOSE "$wsrc/$f"
	    if [ $link = 1 ]
	    then
		ln -s "$wsrc/$f" "$wobj/$f"
	    else
		cp "$wsrc/$f" "$wobj/$f"
		copie_date "$wsrc/$f" "$wobj/$f"
	    fi
	done
}

#
# HTML-isation des fichiers htgt de l'arborescence source vers
# l'arborescence temporaire.
#

htmliser ()
{
    wsrc=$1
    wobj=$2
    (
	cd $wsrc
	find . -name "*.htgt" -print
    ) | 
	while read f ; do 
	    h=`echo $f | sed 's/.htgt$//'`
	    $VERBOSE "$wsrc/$f"
	    $HTG "$wsrc/$f" > "$wobj/$h.html"
	    if [ $? != 0 ]
	    then
		echo Problme sur "$wsrc/$f"
		echo
	    fi
	    copie_date "$wsrc/$f" "$wobj/$h.html"
	done
}

#
# Dplace le contenu d'un rpertoire vers une destination.
# Si le rpertoire est vide, ne fait rien.
#

deplacersinonvide ()
{
    src=$1
    dst=$2
    if [ x"`ls $src`" != x ]
    then mv $src/* $dst
    fi
}

#
# Beau message d'erreur
#

usage ()
{
    echo "usage: $0 [-l] <srcdir> <tmpdir> <objdir>" >&2
    exit 1
}

#
# Analyse des options
#

set -- `getopt l $*`

if [ $? != 0 ]
then usage
fi

link=0

for i
do
    case $i in
	-l)	link=1 ; shift ;;
	--)	shift ; break ;;
    esac
done

if [ $# != 3 ]
then usage
fi

WSRC=$1
WTMP=$2
WOBJ=$3

rm -rf $WTMP/new $WTMP/old
mkdir  $WTMP $WTMP/new $WTMP/old 2> /dev/null

repertoires $WSRC $WTMP/new &&
    autres $link $WSRC $WTMP/new &&
    htmliser $WSRC $WTMP/new &&
    deplacersinonvide $WOBJ $WTMP/old &&
    mv $WTMP/new/* $WOBJ
