#!/usr/pkg/bin/perl
# ====================================================================
# index_albums
#
# Copyright (c) 2000 David Burren.  All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in
#    the documentation and/or other materials provided with the
#    distribution.
#
# 3. The end-user documentation included with the redistribution,
#    if any, must include the following acknowledgment:
#       "This product includes software developed by David Burren."
#    Alternately, this acknowledgment may appear in the software itself,
#    if and wherever such third-party acknowledgments normally appear.
#
# 4. The name "David Burren" must not be used to endorse or promote
#    products derived from this software without prior written
#    permission. For written permission, please contact david@burren.cx.
#
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED.  IN NO EVENT SHALL DAVID BURREN BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# ====================================================================
# $Id $
#
# Create an index.htm at the directory above a set of albums
#
# Starting at the directory specified in $ARGV[0] (defaulting to ".")
# look for subdirectories (using a "*" wildcard).
# Make a link to each directory (if it has an index HTML file in it, link
# to that).  If a "setup" file is in there (created by make_index) parse
# that for a descriptive label.

sub dir_index {
	local($dir) = $_[0];

	if (-f "$dir/index.html") {
		"$dir/index.html";
	} elsif (-f "$dir/index.htm") {
		"$dir/index.htm";
	} elsif (-f "$dir/default.htm") {
		"$dir/default.htm";
	} else {
		"$dir/";
	}
}

sub dir_desc {
	local($dir) = $_[0];
	local($description) = $dir;

	if (open(NOTES, "<$dir/setup")) {
		while (<NOTES>) {
			chomp;
			s/^#.*$//;
			if (/^Title\s+(.*)$/) {
				$description = "$dir - $1";
				last;
			}
		}
		close(NOTES);
	}
	$description;
}

if (defined ($dir = $ARGV[0])) {
	chdir($dir) || die;
}
@dirs = @files = ();
foreach $file (<*>) {
	if (-d $file || -d $file."/") {
		if ($file ne "scripts") {
			push @dirs, $file;
		}
	} else {
		push @files, $file;
	}
}

$title = "Index of albums";

open(INDEX, ">index.htm") || die;

print INDEX "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
print INDEX "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"DTD/xhtml1-strict.dtd\">\n";
print INDEX "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>";
print INDEX "<title>", $title, "</title>" if (defined $title);
print INDEX "</head><body bgcolor=\"#000000\" text=\"#FFFFFF\" link=\"#BFBFFF\" vlink=\"#4F4FFF\" alink=\"#FFFFFF\">\n";

print INDEX "<h2>Albums:</h2>\n";
foreach $dir (sort @dirs) {
	print INDEX "<a href=\"".&dir_index($dir)."\">";
	print INDEX &dir_desc($dir)."</a><br />\n";
}
print INDEX "<hr />\n";

print INDEX '<font size="-1">';
print INDEX "Index last updated: ".scalar localtime(time);
print INDEX "</font>";

print INDEX "</body></html>\n";
