# -*-perl-*- hey - emacs - this is a perl file

# Adjust path for your docbook installation in buildenv.pl

# src/tools/msvc/builddoc.pl
# translated from an earlier .bat file

use strict;
use File::Copy;
use Cwd qw(abs_path getcwd);

my $startdir = getcwd();

my $openjade = 'openjade-1.3.1';
my $dsssl    = 'docbook-dsssl-1.79';

chdir '../../..' if (-d '../msvc' && -d '../../../src');

noversion() unless -e 'doc/src/sgml/version.sgml';

do 'src/tools/msvc/buildenv.pl' if -e 'src/tools/msvc/buildenv.pl';

my $docroot = $ENV{DOCROOT};
die "bad DOCROOT '$docroot'" unless ($docroot && -d $docroot);

my @notfound;
foreach my $dir ('docbook', $openjade, $dsssl)
{
	push(@notfound, $dir) unless -d "$docroot/$dir";
}
missing() if @notfound;

my $arg = shift;
renamefiles();

chdir 'doc/src/sgml';

$ENV{SGML_CATALOG_FILES} =
  "$docroot/$openjade/dsssl/catalog;" . "$docroot/docbook/docbook.cat";

my $cmd;

# openjade exits below with a harmless non-zero status, so we
# can't die on "failure"

$cmd =
    "perl mk_feature_tables.pl YES "
  . "../../../src/backend/catalog/sql_feature_packages.txt "
  . "../../../src/backend/catalog/sql_features.txt "
  . "> features-supported.sgml";
system($cmd);
die "features_supported" if $?;
$cmd =
    "perl mk_feature_tables.pl NO "
  . "\"../../../src/backend/catalog/sql_feature_packages.txt\" "
  . "\"../../../src/backend/catalog/sql_features.txt\" "
  . "> features-unsupported.sgml";
system($cmd);
die "features_unsupported" if $?;
$cmd =
  "perl generate-errcodes-table.pl \"../../../src/backend/utils/errcodes.txt\" "
  . "> errcodes-table.sgml";
system($cmd);
die "errcodes-table" if $?;

print "Running first build...\n";
$cmd =
    "\"$docroot/$openjade/bin/openjade\" -V html-index -wall "
  . "-wno-unused-param -wno-empty -D . -c \"$docroot/$dsssl/catalog\" "
  . "-d stylesheet.dsl -i output-html -t sgml postgres.sgml 2>&1 "
  . "| findstr /V \"DTDDECL catalog entries are not supported\" ";
system($cmd);    # die "openjade" if $?;
print "Running collateindex...\n";
$cmd = "perl \"$docroot/$dsssl/bin/collateindex.pl\" -f -g -i bookindex "
  . "-o bookindex.sgml HTML.index";
system($cmd);
die "collateindex" if $?;
mkdir "html";
print "Running second build...\n";
$cmd =
    "\"$docroot/$openjade/bin/openjade\" -wall -wno-unused-param -wno-empty "
  . "-D . -c \"$docroot/$dsssl/catalog\" -d stylesheet.dsl -t sgml "
  . "-i output-html -i include-index postgres.sgml 2>&1 "
  . "| findstr /V \"DTDDECL catalog entries are not supported\" ";

system($cmd);    # die "openjade" if $?;

copy "stylesheet.css", "html/stylesheet.css";

print "Docs build complete.\n";

exit;

########################################################

sub renamefiles
{

	# Rename ISO entity files
	my $savedir = getcwd();
	chdir "$docroot/docbook";
	foreach my $f (glob('ISO*'))
	{
		next if $f =~ /\.gml$/i;
		my $nf = $f;
		$nf =~ s/ISO(.*)/ISO-$1.gml/;
		move $f, $nf;
	}
	chdir $savedir;
  return;
}

sub missing
{
	print STDERR "could not find $docroot/$_\n" foreach (@notfound);
	exit 1;
}

sub noversion
{
	print STDERR "Could not find version.sgml. ",
	  "Please run mkvcbuild.pl first!\n";
	exit 1;
}
