| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #line 1
- package Module::Install::AutoInstall;
- use strict;
- use Module::Install::Base ();
- use vars qw{$VERSION @ISA $ISCORE};
- BEGIN {
- $VERSION = '1.01';
- @ISA = 'Module::Install::Base';
- $ISCORE = 1;
- }
- sub AutoInstall { $_[0] }
- sub run {
- my $self = shift;
- $self->auto_install_now(@_);
- }
- sub write {
- my $self = shift;
- $self->auto_install(@_);
- }
- sub auto_install {
- my $self = shift;
- return if $self->{done}++;
- # Flatten array of arrays into a single array
- my @core = map @$_, map @$_, grep ref,
- $self->build_requires, $self->requires;
- my @config = @_;
- # We'll need Module::AutoInstall
- $self->include('Module::AutoInstall');
- require Module::AutoInstall;
- my @features_require = Module::AutoInstall->import(
- (@config ? (-config => \@config) : ()),
- (@core ? (-core => \@core) : ()),
- $self->features,
- );
- my %seen;
- my @requires = map @$_, map @$_, grep ref, $self->requires;
- while (my ($mod, $ver) = splice(@requires, 0, 2)) {
- $seen{$mod}{$ver}++;
- }
- my @build_requires = map @$_, map @$_, grep ref, $self->build_requires;
- while (my ($mod, $ver) = splice(@build_requires, 0, 2)) {
- $seen{$mod}{$ver}++;
- }
- my @configure_requires = map @$_, map @$_, grep ref, $self->configure_requires;
- while (my ($mod, $ver) = splice(@configure_requires, 0, 2)) {
- $seen{$mod}{$ver}++;
- }
- my @deduped;
- while (my ($mod, $ver) = splice(@features_require, 0, 2)) {
- push @deduped, $mod => $ver unless $seen{$mod}{$ver}++;
- }
- $self->requires(@deduped);
- $self->makemaker_args( Module::AutoInstall::_make_args() );
- my $class = ref($self);
- $self->postamble(
- "# --- $class section:\n" .
- Module::AutoInstall::postamble()
- );
- }
- sub auto_install_now {
- my $self = shift;
- $self->auto_install(@_);
- Module::AutoInstall::do_install();
- }
- 1;
|