The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
#
# $Id: write_manifest,v 33.1 2009/07/09 12:00:11 biersma Exp $
#
# (c) 1999-2009 Morgan Stanley & Co. Incorporated
# See ..../src/LICENSE for terms of distribution.
#
# This is not used to build the distribution, just to keep that pesky
# MANIFEST file up to date...
#
# To run this, from the top level source directory, ./util/write_manifest
#

use strict;

my %skip = map { $_ => 1 } qw(
                              .options/rcsMajor
                              .msbaseline
                              .exclude
                             );
my %files;

warn "Searching source tree for files...\n";
open(FIND, '-|', "find . -type f -print") ||
  die "Unable to fork find: $!\n";
while ( <FIND> ) {
    chomp;
    s|^\./||;
    next if $skip{$_};
    next if /~$/;
    $files{$_} = 1;
}
close(FIND) ||
  die "Error running find: $!\n";

#
# Include generated files
#
foreach my $file (qw(MANIFEST Changes.html README.html)) {
    $files{$file} = 1;
}

warn "Writing new MANIFEST file...\n";
open(NEW, '>', "MANIFEST.$$") ||
  die "Unable to open MANIFEST.$$: $!\n";
foreach (sort keys %files) {
    print NEW "$_\n";
}
close(NEW) ||
  die "Unable to close MANIFEST.$$: $!\n";

rename("MANIFEST.$$","MANIFEST") ||
  die "Unable to rename MANIFEST.$$ to MANIFEST: $!\n";

exit 0;

END {
    unlink "MANIFEST.$$";
}