Acme-Perl-Consensual

 view release on metacpan or  search on metacpan

inc/Module/Install/Package.pm  view on Meta::CPAN

        $module_package_plugin->version_check($VERSION);
    }
    else {
        $module_package_dist_plugin = $self->_load_dist_plugin($plugin_spec);
        $module_package_dist_plugin->mi($module_install_plugin) if ref $module_package_dist_plugin;
    }
    # NOTE - This is the point in time where the body of Makefile.PL runs...
    return;

    sub INIT {
        return unless $module_install_plugin;
        return if $Module::Package::ERROR;
        eval {
            if ($module_install_plugin->is_admin) {
                $module_package_plugin->initial();
                $module_package_plugin->main();
            }
            else {
                $module_install_plugin->_initial();
                $module_package_dist_plugin->_initial() if ref $module_package_dist_plugin;
                $module_install_plugin->_main();
                $module_package_dist_plugin->_main() if ref $module_package_dist_plugin;
            }
        };
        if ($@) {
            $Module::Package::ERROR = $@;
            die $@;
        }
        @argv = @ARGV; # XXX ARGVHACK
    }

    # If this Module::Install plugin was used (by Module::Package) then wrap
    # up any loose ends. This will get called after Makefile.PL has completed.
    sub END {
        @ARGV = @argv; # XXX ARGVHACK
        return unless $module_install_plugin;
        return if $Module::Package::ERROR;
        $module_package_plugin
            ? do {
                $module_package_plugin->final;
                $module_package_plugin->replicate_module_package;
            }
            : do {
                $module_install_plugin->_final;
                $module_package_dist_plugin->_final() if ref $module_package_dist_plugin;
            }
    }
}

# Module::Package, Module::Install::Package and Module::Package::Plugin
# must all have the same version. Seems wise.
sub module_package_internals_version_check {
    my ($self, $version) = @_;
    return if $version < 0.1800001;   # XXX BOOTBUGHACK!!
    die <<"..." unless $version == $VERSION;

Error! Something has gone awry:
    Module::Package version=$version is using 
    Module::Install::Package version=$VERSION
If you are the author of this module, try upgrading Module::Package.
Otherwise, please notify the author of this error.

...
}

# Find and load the author side plugin:
sub _load_plugin {
    my ($self, $spec, $namespace) = @_;
    $spec ||= '';
    $namespace ||= 'Module::Package';
    my $version = '';
    $Module::Package::plugin_version = 0;
    if ($spec =~ s/\s+(\S+)\s*//) {
        $version = $1;
        $Module::Package::plugin_version = $version;
    }
    my ($module, $plugin) =
        not($spec) ? ('Plugin', "Plugin::basic") :
        ($spec =~ /^\w(\w|::)*$/) ? ($spec, $spec) :
        ($spec =~ /^:(\w+)$/) ? ('Plugin', "Plugin::$1") :
        ($spec =~ /^(\S*\w):(\w+)$/) ? ($1, "$1::$2") :
        die "$spec is invalid";
    $module = "${namespace}::${module}";
    $plugin = "${namespace}::${plugin}";
    eval "use $module $version (); 1" or die $@;
    return $plugin->new();
}

# Find and load the user side plugin:
sub _load_dist_plugin {
    my ($self, $spec, $namespace) = @_;
    $spec ||= '';
    $namespace ||= 'Module::Package::Dist';
    my $r = eval { $self->_load_plugin($spec, $namespace); };
    return $r if ref $r;
    return;
}

#-----------------------------------------------------------------------------#
# These are the user side analogs to the author side plugin API calls.
# Prefix with '_' to not pollute Module::Install plugin space.
#-----------------------------------------------------------------------------#
sub _initial {
    my ($self) = @_;
}

sub _main {
    my ($self) = @_;
}

# NOTE These must match Module::Package::Plugin::final.
sub _final {
    my ($self) = @_;
    $self->_all_from;
    $self->_requires_from;
    $self->_install_bin;
    $self->_install_share;
    $self->_WriteAll;
}

#-----------------------------------------------------------------------------#



( run in 1.027 second using v1.01-cache-2.11-cpan-437f7b0c052 )