package CPAN::Plugin; use strict; use warnings; our $VERSION = '0.97'; require CPAN; ###################################################################### sub new { # ; my ($class, %params) = @_; my $self = +{ (ref $class ? (%$class) : ()), %params, }; $self = bless $self, ref $class ? ref $class : $class; unless (ref $class) { local $_; no warnings 'once'; $CPAN::META->use_inst ($_) for $self->plugin_requires; } $self; } ###################################################################### sub plugin_requires { # ; } ###################################################################### sub distribution_object { # ; my ($self) = @_; $self->{distribution_object}; } ###################################################################### sub distribution { # ; my ($self) = @_; my $distribution = $self->distribution_object->id; CPAN::Shell->expand("Distribution",$distribution) or $self->frontend->mydie("Unknowns distribution '$distribution'\n"); } ###################################################################### sub distribution_info { # ; my ($self) = @_; CPAN::DistnameInfo->new ($self->distribution->id); } ###################################################################### sub build_dir { # ; my ($self) = @_; my $build_dir = $self->distribution->{build_dir} or $self->frontend->mydie("Distribution has not been built yet, cannot proceed"); } ###################################################################### sub is_xs { # my ($self) = @_; my @xs = glob File::Spec->catfile ($self->build_dir, '*.xs'); # quick try unless (@xs) { require ExtUtils::Manifest; my $manifest_file = File::Spec->catfile ($self->build_dir, "MANIFEST"); my $manifest = ExtUtils::Manifest::maniread($manifest_file); @xs = grep /\.xs$/, keys %$manifest; } scalar @xs; } ###################################################################### package CPAN::Plugin; 1; __END__ =pod =head1 NAME CPAN::Plugin - Base class for CPAN shell extensions =head1 SYNOPSIS package CPAN::Plugin::Flurb; use parent 'CPAN::Plugin'; sub post_test { my ($self, $distribution_object) = @_; $self = $self->new (distribution_object => $distribution_object); ...; } =head1 DESCRIPTION =head2 Alpha Status The plugin system in the CPAN shell was introduced in version 2.07 and is still considered experimental. =head2 How Plugins work? See L<CPAN/"Plugin support">. =head1 METHODS =head2 plugin_requires returns list of packages given plugin requires for functionality. This list is evaluated using C<< CPAN->use_inst >> method. =head2 distribution_object Get current distribution object. =head2 distribution =head2 distribution_info =head2 build_dir Simple delegatees for misc parameters derived from distribution =head2 is_xs Predicate to detect whether package contains XS. =head1 AUTHOR Branislav Zahradnik <barney@cpan.org> =cut
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
API | Folder | 0755 |
|
|
Exception | Folder | 0755 |
|
|
FTP | Folder | 0755 |
|
|
HTTP | Folder | 0755 |
|
|
Kwalify | Folder | 0755 |
|
|
LWP | Folder | 0755 |
|
|
Plugin | Folder | 0755 |
|
|
Admin.pm | File | 7.61 KB | 0444 |
|
Author.pm | File | 6.68 KB | 0644 |
|
Bundle.pm | File | 9.03 KB | 0644 |
|
CacheMgr.pm | File | 7.48 KB | 0644 |
|
Complete.pm | File | 5.85 KB | 0644 |
|
Config.pm | File | 9.81 KB | 0644 |
|
Config.pm.1495584755 | File | 10.08 KB | 0644 |
|
Config.pm.1496275908 | File | 10.08 KB | 0644 |
|
Config.pm.1498608719 | File | 10.07 KB | 0644 |
|
Config.pm.1499904706 | File | 10.04 KB | 0644 |
|
Config.pm.1499991045 | File | 10.08 KB | 0644 |
|
Config.pm.1500077464 | File | 10.08 KB | 0644 |
|
Config.pm.1500336657 | File | 10.08 KB | 0644 |
|
Config.pm.1501200686 | File | 10.08 KB | 0644 |
|
Config.pm.1504224690 | File | 10.08 KB | 0644 |
|
Config.pm.1505261476 | File | 9.97 KB | 0644 |
|
Config.pm.1505779932 | File | 9.93 KB | 0644 |
|
Config.pm.1506557632 | File | 9.93 KB | 0644 |
|
Config.pm.1507767121 | File | 9.84 KB | 0644 |
|
Config.pm.1508285482 | File | 9.87 KB | 0644 |
|
Config.pm.1508803898 | File | 9.87 KB | 0644 |
|
Config.pm.1509495108 | File | 9.81 KB | 0644 |
|
Config.pm.1510272683 | File | 9.77 KB | 0644 |
|
Config.pm.1510963855 | File | 9.86 KB | 0644 |
|
Config.pm.1511223072 | File | 9.85 KB | 0644 |
|
Config.pm.1513037604 | File | 9.86 KB | 0644 |
|
Config.pm.1513642246 | File | 9.9 KB | 0644 |
|
Config.pm.1513901506 | File | 9.9 KB | 0644 |
|
Config.pm.1515456673 | File | 9.9 KB | 0644 |
|
Config.pm.1516061466 | File | 9.86 KB | 0644 |
|
Config.pm.1516234390 | File | 9.86 KB | 0644 |
|
Config.pm.1516666262 | File | 9.82 KB | 0644 |
|
Config.pm.1517443921 | File | 9.82 KB | 0644 |
|
Config.pm.1519344677 | File | 9.82 KB | 0644 |
|
Config.pm.1520986232 | File | 9.82 KB | 0644 |
|
Config.pm.1521504678 | File | 9.84 KB | 0644 |
|
Config.pm.1522714247 | File | 9.31 KB | 0644 |
|
Config.pm.1524096686 | File | 9.78 KB | 0644 |
|
Config.pm.1525738266 | File | 9.87 KB | 0644 |
|
Config.pm.1526947858 | File | 9.87 KB | 0644 |
|
Debug.pm | File | 2.05 KB | 0644 |
|
DeferredCode.pm | File | 189 B | 0644 |
|
Distribution.pm | File | 145.09 KB | 0644 |
|
Distroprefs.pm | File | 10.84 KB | 0644 |
|
Distrostatus.pm | File | 972 B | 0644 |
|
FTP.pm | File | 41.19 KB | 0644 |
|
FirstTime.pm | File | 66.98 KB | 0644 |
|
HandleConfig.pm | File | 22.61 KB | 0644 |
|
Index.pm | File | 21.43 KB | 0644 |
|
InfoObj.pm | File | 6.75 KB | 0644 |
|
Kwalify.pm | File | 3.35 KB | 0644 |
|
Mirrors.pm | File | 14.55 KB | 0644 |
|
Module.pm | File | 21.52 KB | 0644 |
|
Nox.pm | File | 928 B | 0644 |
|
Plugin.pm | File | 3.14 KB | 0444 |
|
Prompt.pm | File | 567 B | 0644 |
|
Queue.pm | File | 6.31 KB | 0644 |
|
Shell.pm | File | 68.45 KB | 0644 |
|
Tarzip.pm | File | 15.69 KB | 0644 |
|
URL.pm | File | 588 B | 0644 |
|
Version.pm | File | 4.21 KB | 0644 |
|