The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use 5.006001;
use ExtUtils::MakeMaker;
use Data::Dumper;

# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.

sub initialize {
	my @scripts = map { "scripts/$_" } qw(
		snap_charge
		snapback_loop
		snapback2
		snapcopy
	);
	my %X;
	$X{INSTALLDIRS}	= "perl";
	$X{clean} = {
		FILES => join(" ", 'scripts/initp.pl', @scripts, 'b_target', 'b_source'),
	};
	$X{EXE_FILES}	= [ @scripts ];
	$X{PL_FILES}	= { 'relocate.util' => [ @scripts ] };
	for(%MV::Default) {
		$X{$_} = $MV::Default{$_}
			unless defined $X{$_};
	}
	mk_initp(\%X);
	return \%X;
}

sub mk_initp {
	my ($ref) = @_;
	local($Data::Dumper::Terse);
	$Data::Dumper::Terse = 1;
	open (INITP, ">scripts/initp.pl")
		or die "Can't write initp.pl: $!\n";
	print INITP '$MV::Self = ';
	print INITP Dumper($ref);
	print INITP ";\n1;";
	close INITP;
}


my %mv_specific = qw/
	CP            1
	RM            1
	SENDMAIL      1
	MV            1
	RSYNC         1
	RSYNCSHELL    1
/;

my %delete;
use Getopt::Long;
my @saveargs = @ARGV;
my %optctl = (
	'junk'			=> sub { 1 },
	'<>'			=> sub {
							my ($arg) = @_;
	warn "checking option $arg\n";
							my ($opt, $val);
							if($arg !~ /=/) {
								$opt = $arg;
								$val = 1;
							}
							else {
								($opt, $val) = split /=/, $arg, 2;
							}

							if ($mv_specific{uc $opt}) {
								$delete{$arg} = 1;
								$delete{$opt} = 1;
								$delete{$val} = 1;
								warn "It was specific arg=$arg\n";
							}

							$MV::Default{$opt} = $val;
							return;
						},
);

my @options = ( qw/
	junk
	<>
/ );

Getopt::Long::config(qw/permute/);
GetOptions(\%optctl, @options)
	or die "Bad option get\n";

#use Data::Dumper;
#$Data::Dumper::Terse = $Data::Dumper::Indent = 2;
#print "ARGV: " . Dumper(\@ARGV);
#print "OPT: " . Dumper(\%MV::Default);

@ARGV = grep ! $delete{$_}, @saveargs;

#warn "ARGV now=" . Dumper(\@ARGV)  . "\n";

WriteMakefile(
    NAME		    => 'Snapback2',
    VERSION_FROM	=> 'scripts/snapback2.PL', # finds $VERSION
	'MAN1PODS' => {
		'scripts/snapcopy'    => '$(INST_MAN1DIR)/snapcopy.$(MAN1EXT)',
		'scripts/snapback2'    => '$(INST_MAN1DIR)/snapback2.$(MAN1EXT)',
		'scripts/snapback_loop'    => '$(INST_MAN1DIR)/snapback_loop.$(MAN1EXT)',
		'scripts/snap_charge'    => '$(INST_MAN1DIR)/snap_charge.$(MAN1EXT)',
    },
	EXE_FILES => [],
	PL_FILES => {},
	PM => { 'Backup/Snapback.pm' => '$(INST_LIBDIR)/Backup/Snapback.pm'},
	CONFIGURE => \&initialize,
    PREREQ_PM		=> { Config::ApacheFormat => 1.2 }, # e.g., Module::Name => 1.1
    ($] >= 5.005 ?    ## Add these new keywords supported since 5.005
      (ABSTRACT => 'Snapback2 -- automated rsync backup',
       AUTHOR     => 'Mike Heins <snapback2@perusion.org>') : ()),
);