| Server IP : 142.11.234.102 / Your IP : 216.73.216.19 Web Server : Apache System : Linux dal-shared-66.hostwindsdns.com 4.18.0-513.24.1.lve.1.el8.x86_64 #1 SMP Thu May 9 15:10:09 UTC 2024 x86_64 User : krnuyqrm ( 1183) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/self/root/proc/self/root/usr/share/perl5/vendor_perl/App/cpanminus/ |
Upload File : |
package App::cpanminus::Dependency;
use strict;
use CPAN::Meta::Requirements;
sub from_prereqs {
my($class, $prereqs, $phases, $types) = @_;
my @deps;
for my $type (@$types) {
push @deps, $class->from_versions(
$prereqs->merged_requirements($phases, [$type])->as_string_hash,
$type,
);
}
return @deps;
}
sub from_versions {
my($class, $versions, $type) = @_;
my @deps;
while (my($module, $version) = each %$versions) {
push @deps, $class->new($module, $version, $type)
}
@deps;
}
sub merge_with {
my($self, $requirements) = @_;
# save the original requirement
$self->{original_version} = $self->version;
# should it clone? not cloning means we upgrade root $requirements on our way
eval {
$requirements->add_string_requirement($self->module, $self->version);
};
if ($@ =~ /illegal requirements/) {
# Just give a warning then replace with the root requirements
# so that later CPAN::Meta::Check can give a valid error
warn sprintf("Can't merge requirements for %s: '%s' and '%s'",
$self->module, $self->version,
$requirements->requirements_for_module($self->module));
}
$self->{version} = $requirements->requirements_for_module($self->module);
}
sub new {
my($class, $module, $version, $type) = @_;
bless {
module => $module,
version => $version,
type => $type || 'requires',
}, $class;
}
sub module { $_[0]->{module} }
sub version { $_[0]->{version} }
sub type { $_[0]->{type} }
sub requires_version {
my $self = shift;
# original_version may be 0
if (defined $self->{original_version}) {
return $self->{original_version};
}
$self->version;
}
sub is_requirement {
$_[0]->{type} eq 'requires';
}
1;