Twenty-First Century Meyer
#!/bin/sh
######################################################################
# tirindex - Generate tir directory index.
# Created 2006-8-13 David Meyer.
######################################################################

# Identification #####################################################

PROGRAM='tirindex'
VERSION=0.1
COPYRIGHT='Copyright (C) 2006 David Meyer'
DESCRIPTION='Generate tir directory index.'
USAGE="Usage: $0 [-Vh] [DIRECTORY]"
CONTACT='David Meyer <papa@jtan.com>'

# Initialize environment #############################################

unset IFS
PATH=
BASENAME=/usr/bin/basename
CAT=/bin/cat
ECHO=/bin/echo
SED=/bin/sed

: ${TIRROOT:=/mnt/card/Meyer21C}

# Arguments ##########################################################

while getopts Vh option
do	case $option in
	V )	$ECHO "$PROGRAM $VERSION"
		$ECHO $COPYRIGHT
		exit 0
		;;
	h )	$CAT << ENDHELP
$USAGE

$DESCRIPTION
DIRECTORY defaults to current directory.

Options:
	-V	Display version number
	-h	Display this help message

Report bugs to $CONTACT.
ENDHELP
		exit 0
		;;
	* )	$ECHO $USAGE >&2
		exit 1
		;;
	esac
done

shift $(( $OPTIND-1 ))

HERE=${1:-.}

# Functions ##########################################################

cat_filter_root_path() {
	if [ $HERE -ef $TIRROOT ]
	then	$SED -e 's:\.\./:./:' $1
	else	$CAT $1
	fi
}

inherit_fn() {
	fn=${2:?"Insufficient arguments: inherit_fn $@"}
	if [ -f $fn ]
	then	eval $1=$fn
	elif [ -f $TIRROOT/$fn ]
	then	eval $1=$TIRROOT/$fn
	else	eval $1=${3:-/dev/null}
	fi
}

# Main driver ########################################################

cd $HERE

test -f .title && title=`$CAT .title`
test -f $TIRROOT/.title && site=`$CAT $TIRROOT/.title`

if [ x"${title:=`$BASENAME $HERE`}" = x"." ]
then	title="Site under construction"
fi

#title_div
$ECHO "<h1>$title</h1>"

#test -f .image && image_div
if [ -f .image ]
then	$ECHO '<div id="image">'
	$ECHO "<img src=\"`cat_filter_root_path .image`\" />"
	$ECHO '</div>'
fi

#test -f .description && description_div
if [ -f .description ]
then	$ECHO '<div id="description">'
	$CAT .description
	$ECHO '</div>'
fi

objects=''
exits=''
for name in *
do	if [ -f $name ]
	then	case $name in
		index.html | *~ )	: ;;
		*.html )	objects="$objects$name " ;;
		* )	test ! -f ${name%.*}.html && objects="$objects$name " ;;
		esac
	elif [ -d $name ]
	then	exits="$exits$name "
	fi
done

if [ "$objects" ]
then	$ECHO '<div id="object-list">You see here:<ul>'
	for obj in $objects
	do	name=${obj%.*}
		ext=${obj##*.}
		bullet_fn=.${obj}_icon
		test -f $bullet_fn || inherit_fn bullet_fn .${ext}_icon
		test -f $bullet_fn || inherit_fn bullet_fn ._object_icon $browser_icon_fn
		test x"$ext" = x"$name" && ext=object
		$ECHO -n "<li><a href=\"$obj\">"
		test -f $bullet_fn && $ECHO -n "<img src=\"`cat_filter_root_path $bullet_fn`\" alt=\"$ext\"/>"
		$ECHO "$name</a></li>"
	done
	$ECHO '</ul></div><!-- end div object-list -->'
fi

if [ "$exits" ]
then	$ECHO '<div id="exit-list">Obvious ways out:<ul>'
	for ex in $exits
	do	bullet_fn=$ex/.icon
		test -f $bullet_fn || inherit_fn bullet_fn ._exit_icon $browser_icon_fn
		$ECHO -n "<li><a href=\"$ex/index.html\">"
		test -f $bullet_fn && $ECHO -n "<img src=\"`cat_filter_root_path $bullet_fn`\" alt=\"To: \"/>"
		$ECHO "$ex</a></li>"
	done
	$ECHO '</ul></div><!-- end div exit-list -->'
fi

#test -f .copyright && copyright_div
if [ -f .copyright ]
then	$ECHO '<div id="copyright">'
	$CAT .copyright
	$ECHO '</div>'
fi

#test -f .license && license_div
if [ -f .license ]
then	$ECHO '<div id="license">'
	cat_filter_root_path .license
	$ECHO '</div>'
fi

exit