Index: /trunk/gsdl/bin/script/exportcol.pl
===================================================================
--- /trunk/gsdl/bin/script/exportcol.pl	(revision 2075)
+++ /trunk/gsdl/bin/script/exportcol.pl	(revision 2075)
@@ -0,0 +1,149 @@
+#!/usr/bin/perl -w
+
+###########################################################################
+#
+# exportcol.pl --
+# A component of the Greenstone digital library software
+# from the New Zealand Digital Library Project at the 
+# University of Waikato, New Zealand.
+#
+# Copyright (C) 1999 New Zealand Digital Library Project
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+###########################################################################
+
+BEGIN {
+    die "GSDLHOME not set\n" unless defined $ENV{'GSDLHOME'};
+    unshift (@INC, "$ENV{'GSDLHOME'}/perllib");
+}
+
+use util;
+use parsargv;
+
+sub print_usage {
+    print STDERR "\n";
+    print STDERR "exportcol.pl: Exports a collection for writing to CD-ROM.\n\n";
+    print STDERR "  usage: $0 [options] collection-name\n\n";
+    print STDERR "   -out   Filename or handle to print debug info to.\n";
+    print STDERR "          The default is STDERR\n\n";
+}
+
+&main();
+
+sub main {
+    my ($out, $collection);
+    if (!parsargv::parse(\@ARGV, 'out/.*/STDERR', \$out)) {
+	&print_usage();
+	die "\n";
+    }
+
+    # get and check the collection name
+    if (($collection = &util::use_collection(@ARGV)) eq "") {
+	&print_usage();
+	exit (1);
+    }
+
+    my $close_out = 0;
+    if ($out !~ /^(STDERR|STDOUT)$/i) {
+	open (OUT, ">$out") || die "Couldn't open output file $out\n";
+	$out = OUT;
+	$close_out = 1;
+    }
+
+    # create exported directory
+    my $topdir = &util::filename_cat ($ENV{'GSDLHOME'}, "tmp", "exported_$collection");
+    &util::mk_all_dir ($topdir);
+    if (!-d $topdir) {
+	print $out "exportcol.pl failed: couldn't create directory $topdir\n";
+	die "\n";
+    }
+
+    # make other directories (we'll assume that if we created topdir
+    # successfully there'll be no problems creating these)
+    my $gsdldir = &util::filename_cat ($topdir, "gsdl");
+    &util::mk_all_dir ($gsdldir);
+    my $collectdir = &util::filename_cat ($gsdldir, "collect");
+    &util::mk_all_dir ($collectdir);
+    my $etcdir = &util::filename_cat ($gsdldir, "etc");
+    &util::mk_all_dir ($etcdir);
+
+    # create the install.cfg file
+    my $installcfg = &util::filename_cat ($topdir, "install.cfg");
+    if (!open (INSTALLCFG, ">$installcfg")) {
+	print $out "exportcol.pl failed: Could not create $installcfg\n";
+	die "\n";
+    }
+    print INSTALLCFG "CompanyName:New Zealand Digital Library\n";
+    print INSTALLCFG "CollectionName:$collection\n";
+    print INSTALLCFG "CollectionDirName:$collection\n";
+    print INSTALLCFG "CollectionVersion:1.0\n";
+    print INSTALLCFG "CollectionVolume:1\n";
+    print INSTALLCFG "ProgramGroupName:Greenstone\n";
+    close INSTALLCFG;
+
+    # create the manifest.cfg file
+    my $manifestcfg = &util::filename_cat ($topdir, "manifest.cfg");
+    if (!open (MANIFESTCFG, ">$manifestcfg")) {
+	print $out "exportcol.pl failed: Could not create $manifestcfg\n";
+	die "\n";
+    }
+    print MANIFESTCFG "all:\n";
+    print MANIFESTCFG "  {library} {collection}\n\n";
+    print MANIFESTCFG "library:\n";
+    print MANIFESTCFG "  server.exe\n\n";
+    print MANIFESTCFG "database:\n";
+    print MANIFESTCFG '  collect\$(COLDIRNAME)\index\text\$(COLDIRNAME).ldb' . "\n\n";
+    print MANIFESTCFG "collection:\n";
+    print MANIFESTCFG "  collect etc images macros mappings\n";
+    close MANIFESTCFG;
+
+    # copy the necessary stuff from GSDLHOME
+    my $imagesdir = &util::filename_cat ($ENV{'GSDLHOME'}, "images");
+    my $macrosdir = &util::filename_cat ($ENV{'GSDLHOME'}, "macros");
+    my $mappingsdir = &util::filename_cat ($ENV{'GSDLHOME'}, "mappings");
+    my $maincfg = &util::filename_cat ($ENV{'GSDLHOME'}, "etc", "main.cfg");
+    my $serverexe = &util::filename_cat ($ENV{'GSDLHOME'}, "bin", "windows", "server.exe");
+    my $gssetupexe = &util::filename_cat ($ENV{'GSDLHOME'}, "bin", "windows", "gssetup.exe");
+    my $setupexe = &util::filename_cat ($ENV{'GSDLHOME'}, "bin", "windows", "Setup.exe");
+
+    if ((!-d $imagesdir) || (!-d $macrosdir) || (!-d $mappingsdir) || (!-e $maincfg) ||
+	(!-e $serverexe) || (!-e $gssetupexe) || (!-e $setupexe)) {
+	print $out "exportcol.pl failed: One or more the the following necessary\n";
+	print $out "files and directories does not exist\n\n";
+	print $out "  $imagesdir\n";
+	print $out "  $macrosdir\n";
+	print $out "  $mappingsdir\n";
+	print $out "  $maincfg\n";
+	print $out "  $serverexe\n";
+	print $out "  $gssetupexe\n";
+	print $out "  $setupexe\n";
+	die "\n";
+    }
+
+    &util::cp_r ($imagesdir, $gsdldir);
+    &util::cp_r ($macrosdir, $gsdldir);
+    &util::cp_r ($mappingsdir, $gsdldir);
+    &util::cp ($maincfg, $etcdir);
+    &util::cp ($serverexe, $gsdldir);
+    &util::cp ($gssetupexe, $topdir);
+    &util::cp ($setupexe, $topdir);
+
+    # copy the collection itself
+    &util::cp_r (&util::filename_cat($ENV{'GSDLHOME'}, "collect", $collection), $collectdir);
+
+    print $out "exportcol.pl succeeded: The exported collection is in $topdir\n";
+    close OUT if $close_out;
+}
