#!/bin/sh -- # -*- perl -*-
eval 'exec perl -S $0 "$@"'
    if 0;
########################## -*- Mode: Perl -*- ##########################
##
## File             : Conscript
##
## Description      : 
##
## Author           : Norbert Goevert
## Created On       : Tue Sep  3 16:49:55 1996
##
## Last Modified By : Norbert Goevert
## Last Modified On : Fri Jan 31 12:33:41 1997
##
## $State: Exp $
##
## $Id: Conscript,v 5.1.1.1 1996/11/06 11:40:53 goevert Exp goevert $
##
## $Log: Conscript,v $
## Revision 5.1.1.1  1996/11/06 11:40:53  goevert
## patch4: revision number 5.1
##
## Revision 5.1  1996/11/05 16:53:13  goevert
## *** empty log message ***
##
## Revision 5.0.1.1  1996/11/04 13:05:47  goevert
## patch21: cons instead of MakeMaker
##
########################################################################


Import qw (CONS devel host);

$ftpdir = '/home/robots/ftp/pub/wais/SFgate-5.1';
$revdir = '/usr/local/ls6/src/SFgate/revisions';

if ($devel eq 'dist' || $devel eq 'distgold' || $devel eq 'ftp') {
    if ($devel eq 'dist' || $devel eq 'ftp') {
        if (-e '../MANIFEST.default') {
            unlink('../MANIFEST');
            print "symlink('MANIFEST.default', '../MANIFEST')\n";
            symlink('MANIFEST.default', '../MANIFEST');
        }
        $distname = "SFgate-$::CONFIG{REVISION}";
    }
    else {
        if (-e '../MANIFEST.gold') {
            unlink('../MANIFEST');
            print "symlink('MANIFEST.gold', '../MANIFEST')\n";
            symlink('MANIFEST.gold', '../MANIFEST');
        }
        $distname = "SFgate-gold-$::CONFIG{REVISION}";
    }

    &encrypt if $host;
    
    &docs;

    &decrypt if $host;
    
    &makedist($distname);
    
    if (-e '../MANIFEST.gold') {
        unlink('../MANIFEST');
        print "symlink('MANIFEST.gold', '../MANIFEST')\n";
        symlink('MANIFEST.gold', '../MANIFEST');
    }

    &ftp($distname, $ftpdir, $revdir) if $devel eq 'ftp';
}
elsif ($devel eq 'encrypt') {
    &encrypt;
}
elsif ($devel eq 'decrypt') {
    &decrypt;
}
elsif ($devel eq 'docs') {
    &docs;
}
elsif ($devel eq 'check') {
    &check;
}
elsif ($devel eq 'tags') {
    @files = &read_MANIFEST;

    foreach (@files) {
        if (/\.(pm|pl|pl\.in)$/) {
            push @plpm, $_;
        }
    }

    print "cd ..; etags @plpm\n";
    system "cd ..; etags @plpm";
}


## #####################################################################
## subs
## #####################################################################

sub docs
{
    if (-e '../doc/Makefile') {
        print "cd ../doc; make all\n";
        system 'cd ../doc; make all';
    }

    if (-e '../SFproxy/Makefile') {
        print "cd ../SFproxy; make all\n";
        system 'cd ../SFproxy; make all';
    }
}


sub encrypt
{
    if (-e '../lib/SFgate/Highlight.pm.clear'
        || -e '../lib/SFgate/Server.pm.clear') {
        print "*** clear Files exist, no encryption done!\n";
    }
    else {
        my $arg = "-host $host" if $host;
        print "cp ../lib/SFgate/Highlight.pm ../lib/SFgate/Highlight.pm.clear\n";
        system 'cp ../lib/SFgate/Highlight.pm ../lib/SFgate/Highlight.pm.clear';
        print "perl -S encrypt $arg ../lib/SFgate/Highlight.pm\n";
        system "perl -S encrypt $arg ../lib/SFgate/Highlight.pm";
        print "cp ../lib/SFgate/Server.pm ../lib/SFgate/Server.pm.clear\n";
        system 'cp ../lib/SFgate/Server.pm ../lib/SFgate/Server.pm.clear';
        print "perl -S encrypt $arg ../lib/SFgate/Server.pm\n";
        system "perl -S encrypt $arg ../lib/SFgate/Server.pm";
    }
}


sub decrypt
{
    if (-e '../lib/SFgate/Server.pm.clear') {
        print "mv ../lib/SFgate/Server.pm.clear ../lib/SFgate/Server.pm\n";
        system 'mv ../lib/SFgate/Server.pm.clear ../lib/SFgate/Server.pm';
    }
    if (-e '../lib/SFgate/Highlight.pm.clear') {
        print "mv ../lib/SFgate/Highlight.pm.clear ../lib/SFgate/Highlight.pm\n";
        system 'mv ../lib/SFgate/Highlight.pm.clear ../lib/SFgate/Highlight.pm';
    }
}


sub makedist
{
    my($distname) = @_;
    
    @files = &read_MANIFEST;

    system("rm -rf $distname");

    print "mkdir $distname\n";
    mkdir("$distname", 0755) || die "Couldn't mkdir $distname: $!\n";

    local($_);
    foreach (@files) {
        (@dirs) = split('/', $_);
        $file = pop @dirs;
        $path = $distname;
        foreach $dir (@dirs) {
            $path .= '/' . $dir;
            if (! -d $path) {
                print "mkdir $path\n";
                mkdir($path, 0755) || die "Couldn't mkdir $path: $!\n";
            }
        }
        # print "link $path/$file to  ../$_ \n";
        link "../$_",  "$path/$file" || die "Couldn't link $path/$file to ../$_: $!\n";
    }

    print "tar -cvf $distname.tar $distname\n";
    system("tar -cvf $distname.tar $distname");
    print "rm -rf $distname\n";
    system("rm -rf $distname");
    if (-e "$distname.tar.gz") {
        print "rm -f $distname.tar.gz\n";
        system("rm -f $distname.tar.gz");
    }
    print "gzip -9 $distname.tar\n";
    system("gzip -9 $distname.tar");
}


sub ftp
{
    my($distname, $ftpdir, $revdir) = @_;

    print "rm -f $ftpdir/SFgate-5.1*\n";
    system "rm -f $ftpdir/SFgate-5.1*";

    print "install -m444 ./$distname.tar.gz $ftpdir\n"; 
    system "install -m444 ./$distname.tar.gz $ftpdir";

    print "install -m444 ./$distname.tar.gz $revdir\n"; 
    system "install -m444 ./$distname.tar.gz $revdir";

    print "rm -f $distname.tar.gz\n";
    system "rm -f $distname.tar.gz";

    print "cd $ftpdir; ln -s $distname.tar.gz SFgate-5.1\n";
    system "cd $ftpdir; ln -s $distname.tar.gz SFgate-5.1";

    print "gzip -9 ../doc/SFgate.ps\n";
    print "gzip -9 ../SFproxy/SFproxy.gz\n";
    system "gzip -9 ../doc/SFgate.ps; gzip -9 ../SFproxy/SFproxy.ps";

    print "install -m444 ../doc/SFgate.ps.gz $ftpdir\n";
    print "install -m444 ../SFproxy/SFproxy.ps.gz $ftpdir\n";
    system "install -m444 ../doc/SFgate.ps.gz $ftpdir";
    system "install -m444 ../SFproxy/SFproxy.ps.gz $ftpdir";

    print "gunzip ../doc/SFgate.ps.gz\n"; 
    print "gunzip ../SFproxy/SFproxy.ps.gz\n";
    system "gunzip ../doc/SFgate.ps.gz; gunzip ../SFproxy/SFproxy.ps.gz";
}


sub read_MANIFEST
{
    my @files;
    
    open(MANIFEST, "< ../MANIFEST") || die "Couldn't read MANIFEST: $!\n";

    local($_);
    while (<MANIFEST>) {
        chomp;
        push @files, $_;
    }
    close(MANIFEST);

    @files;
}


sub check
{
    my @libs = grep(/\.pm$/, &read_MANIFEST);

    local $_;
    foreach (@libs) {
        system("perl -I../lib -wc ../$_");
    }

    if (-e '../build/source/SFgate-server') {
        system('perl -I../lib -wc ../build/source/SFgate-server');
    }
    elsif (-e '../build/source/SFgate') {
        system('perl -I../lib -wc ../build/source/SFgate');
    }
}
