Initial Commit
This commit is contained in:
219
database/perl/vendor/lib/Alien/Build/Plugin/Prefer/BadVersion.pm
vendored
Normal file
219
database/perl/vendor/lib/Alien/Build/Plugin/Prefer/BadVersion.pm
vendored
Normal file
@@ -0,0 +1,219 @@
|
||||
package Alien::Build::Plugin::Prefer::BadVersion;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use 5.008004;
|
||||
use Alien::Build::Plugin;
|
||||
use Carp ();
|
||||
|
||||
# ABSTRACT: Plugin to filter out known bad versions
|
||||
our $VERSION = '2.38'; # VERSION
|
||||
|
||||
|
||||
has '+filter' => sub { Carp::croak("The filter property is required for the Prefer::BadVersion plugin") };
|
||||
|
||||
sub init
|
||||
{
|
||||
my($self, $meta) = @_;
|
||||
|
||||
$meta->add_requires('configure', __PACKAGE__, '1.05');
|
||||
|
||||
my $filter;
|
||||
|
||||
if(ref($self->filter) eq '')
|
||||
{
|
||||
my $string = $self->filter;
|
||||
$filter = sub {
|
||||
my($file) = @_;
|
||||
$file->{version} ne $string;
|
||||
};
|
||||
}
|
||||
elsif(ref($self->filter) eq 'ARRAY')
|
||||
{
|
||||
my %filter = map { $_ => 1 } @{ $self->filter };
|
||||
$filter = sub {
|
||||
my($file) = @_;
|
||||
! $filter{$file->{version}};
|
||||
};
|
||||
}
|
||||
elsif(ref($self->filter) eq 'CODE')
|
||||
{
|
||||
my $code = $self->filter;
|
||||
$filter = sub { ! $code->($_[0]) };
|
||||
}
|
||||
else
|
||||
{
|
||||
Carp::croak("unknown filter type for Prefer::BadVersion");
|
||||
}
|
||||
|
||||
$meta->around_hook(
|
||||
prefer => sub {
|
||||
my($orig, $build, @therest) = @_;
|
||||
my $res1 = $orig->($build, @therest);
|
||||
return $res1 unless $res1->{type} eq 'list';
|
||||
|
||||
return {
|
||||
type => 'list',
|
||||
list => [
|
||||
grep { $filter->($_) } @{ $res1->{list} }
|
||||
],
|
||||
};
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Alien::Build::Plugin::Prefer::BadVersion - Plugin to filter out known bad versions
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
version 2.38
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use alienfile;
|
||||
plugin 'Prefer::BadVersion' => '1.2.3';
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This plugin allows you to easily filter out known bad versions of libraries in a share install.
|
||||
It doesn't affect a system install at all. You need a Prefer plugin that filters and sorts files
|
||||
first. You may specify the filter in one of three ways:
|
||||
|
||||
=over
|
||||
|
||||
=item as a string
|
||||
|
||||
Filter out any files that match the given version.
|
||||
|
||||
use alienfile;
|
||||
plugin 'Prefer::BadVersion' => '1.2.3';
|
||||
|
||||
=item as an array
|
||||
|
||||
Filter out all files that match any of the given versions.
|
||||
|
||||
use alienfile;
|
||||
plugin 'Prefer::BadVersion' => [ '1.2.3', '1.2.4' ];
|
||||
|
||||
=item as a code reference
|
||||
|
||||
Filter out any files return a true value.
|
||||
|
||||
use alienfile;
|
||||
plugin 'Prefer::BadVersion' => sub {
|
||||
my($file) = @_;
|
||||
$file->{version} eq '1.2.3'; # same as the string version above
|
||||
};
|
||||
|
||||
=back
|
||||
|
||||
This plugin can also be used to filter out known bad versions of a library on just one platform.
|
||||
For example, if you know that version 1.2.3 if bad on windows, but okay on other platforms:
|
||||
|
||||
use alienfile;
|
||||
plugin 'Prefer::BadVersion' => '1.2.3' if $^O eq 'MSWin32';
|
||||
|
||||
=head1 PROPERTIES
|
||||
|
||||
=head2 filter
|
||||
|
||||
Filter out entries that match the filter.
|
||||
|
||||
=head1 CAVEATS
|
||||
|
||||
If you are using the string or array mode, then you need an existing Prefer plugin that sets the
|
||||
version number for each file candidate, such as L<Alien::Build::Plugin::Prefer::SortVersions>.
|
||||
|
||||
Unless you want to exclude the latest version from a share install, this plugin isn't really
|
||||
that useful. It has no effect on system installs, which may not be obvious at first.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
=over 4
|
||||
|
||||
=item L<alienfile>
|
||||
|
||||
=item L<Alien::Build>
|
||||
|
||||
=item L<Alien::Build::Plugin::Prefer::SortVersions>
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Author: Graham Ollis E<lt>plicease@cpan.orgE<gt>
|
||||
|
||||
Contributors:
|
||||
|
||||
Diab Jerius (DJERIUS)
|
||||
|
||||
Roy Storey (KIWIROY)
|
||||
|
||||
Ilya Pavlov
|
||||
|
||||
David Mertens (run4flat)
|
||||
|
||||
Mark Nunberg (mordy, mnunberg)
|
||||
|
||||
Christian Walde (Mithaldu)
|
||||
|
||||
Brian Wightman (MidLifeXis)
|
||||
|
||||
Zaki Mughal (zmughal)
|
||||
|
||||
mohawk (mohawk2, ETJ)
|
||||
|
||||
Vikas N Kumar (vikasnkumar)
|
||||
|
||||
Flavio Poletti (polettix)
|
||||
|
||||
Salvador Fandiño (salva)
|
||||
|
||||
Gianni Ceccarelli (dakkar)
|
||||
|
||||
Pavel Shaydo (zwon, trinitum)
|
||||
|
||||
Kang-min Liu (劉康民, gugod)
|
||||
|
||||
Nicholas Shipp (nshp)
|
||||
|
||||
Juan Julián Merelo Guervós (JJ)
|
||||
|
||||
Joel Berger (JBERGER)
|
||||
|
||||
Petr Pisar (ppisar)
|
||||
|
||||
Lance Wicks (LANCEW)
|
||||
|
||||
Ahmad Fatoum (a3f, ATHREEF)
|
||||
|
||||
José Joaquín Atria (JJATRIA)
|
||||
|
||||
Duke Leto (LETO)
|
||||
|
||||
Shoichi Kaji (SKAJI)
|
||||
|
||||
Shawn Laffan (SLAFFAN)
|
||||
|
||||
Paul Evans (leonerd, PEVANS)
|
||||
|
||||
Håkon Hægland (hakonhagland, HAKONH)
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
This software is copyright (c) 2011-2020 by Graham Ollis.
|
||||
|
||||
This is free software; you can redistribute it and/or modify it under
|
||||
the same terms as the Perl 5 programming language system itself.
|
||||
|
||||
=cut
|
||||
221
database/perl/vendor/lib/Alien/Build/Plugin/Prefer/GoodVersion.pm
vendored
Normal file
221
database/perl/vendor/lib/Alien/Build/Plugin/Prefer/GoodVersion.pm
vendored
Normal file
@@ -0,0 +1,221 @@
|
||||
package Alien::Build::Plugin::Prefer::GoodVersion;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use 5.008004;
|
||||
use Alien::Build::Plugin;
|
||||
use Carp ();
|
||||
|
||||
# ABSTRACT: Plugin to filter known good versions
|
||||
our $VERSION = '2.38'; # VERSION
|
||||
|
||||
|
||||
has '+filter' => sub { Carp::croak("The filter property is required for the Prefer::GoodVersion plugin") };
|
||||
|
||||
sub init
|
||||
{
|
||||
my($self, $meta) = @_;
|
||||
|
||||
$meta->add_requires('configure', __PACKAGE__, '1.44');
|
||||
|
||||
my $filter;
|
||||
|
||||
if(ref($self->filter) eq '')
|
||||
{
|
||||
my $string = $self->filter;
|
||||
$filter = sub {
|
||||
my($file) = @_;
|
||||
$file->{version} eq $string;
|
||||
};
|
||||
}
|
||||
elsif(ref($self->filter) eq 'ARRAY')
|
||||
{
|
||||
my %filter = map { $_ => 1 } @{ $self->filter };
|
||||
$filter = sub {
|
||||
my($file) = @_;
|
||||
!! $filter{$file->{version}};
|
||||
};
|
||||
}
|
||||
elsif(ref($self->filter) eq 'CODE')
|
||||
{
|
||||
my $code = $self->filter;
|
||||
$filter = sub { !! $code->($_[0]) };
|
||||
}
|
||||
else
|
||||
{
|
||||
Carp::croak("unknown filter type for Prefer::GoodVersion");
|
||||
}
|
||||
|
||||
$meta->around_hook(
|
||||
prefer => sub {
|
||||
my($orig, $build, @therest) = @_;
|
||||
my $res1 = $orig->($build, @therest);
|
||||
return $res1 unless $res1->{type} eq 'list';
|
||||
|
||||
return {
|
||||
type => 'list',
|
||||
list => [
|
||||
grep { $filter->($_) } @{ $res1->{list} }
|
||||
],
|
||||
};
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Alien::Build::Plugin::Prefer::GoodVersion - Plugin to filter known good versions
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
version 2.38
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use alienfile;
|
||||
plugin 'Prefer::GoodVersion' => '1.2.3';
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This plugin allows you to specify one or more good versions of a library. This doesn't affect
|
||||
a system install at all. This plugin does the opposite of the C<Prefer::BadVersion> plugin.
|
||||
You need need a Prefer plugin that filters and sorts files first. You may specify the filter
|
||||
in one of three ways:
|
||||
|
||||
=over
|
||||
|
||||
=item as a string
|
||||
|
||||
Filter any files that match the given version.
|
||||
|
||||
use alienfile;
|
||||
plugin 'Prefer::GoodVersion' => '1.2.3';
|
||||
|
||||
=item as an array
|
||||
|
||||
Filter all files that match any of the given versions.
|
||||
|
||||
use alienfile;
|
||||
plugin 'Prefer::GoodVersion' => [ '1.2.3', '1.2.4' ];
|
||||
|
||||
=item as a code reference
|
||||
|
||||
Filter any files return a true value.
|
||||
|
||||
use alienfile;
|
||||
plugin 'Prefer::GoodVersion' => sub {
|
||||
my($file) = @_;
|
||||
$file->{version} eq '1.2.3'; # same as the string version above
|
||||
};
|
||||
|
||||
=back
|
||||
|
||||
This plugin can also be used to filter known good versions of a library on just one platform.
|
||||
For example, if you know that version 1.2.3 if good on windows, but the default logic is fine
|
||||
on other platforms:
|
||||
|
||||
use alienfile;
|
||||
plugin 'Prefer::GoodVersion' => '1.2.3' if $^O eq 'MSWin32';
|
||||
|
||||
=head1 PROPERTIES
|
||||
|
||||
=head2 filter
|
||||
|
||||
Filter entries that match the filter.
|
||||
|
||||
=head1 CAVEATS
|
||||
|
||||
If you are using the string or array mode, then you need an existing Prefer plugin that sets the
|
||||
version number for each file candidate, such as L<Alien::Build::Plugin::Prefer::SortVersions>.
|
||||
|
||||
Unless you want to exclude the latest version from a share install, this plugin isn't really
|
||||
that useful. It has no effect on system installs, which may not be obvious at first.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
=over 4
|
||||
|
||||
=item L<alienfile>
|
||||
|
||||
=item L<Alien::Build>
|
||||
|
||||
=item L<Alien::Build::Plugin::Prefer::SortVersions>
|
||||
|
||||
=back
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Author: Graham Ollis E<lt>plicease@cpan.orgE<gt>
|
||||
|
||||
Contributors:
|
||||
|
||||
Diab Jerius (DJERIUS)
|
||||
|
||||
Roy Storey (KIWIROY)
|
||||
|
||||
Ilya Pavlov
|
||||
|
||||
David Mertens (run4flat)
|
||||
|
||||
Mark Nunberg (mordy, mnunberg)
|
||||
|
||||
Christian Walde (Mithaldu)
|
||||
|
||||
Brian Wightman (MidLifeXis)
|
||||
|
||||
Zaki Mughal (zmughal)
|
||||
|
||||
mohawk (mohawk2, ETJ)
|
||||
|
||||
Vikas N Kumar (vikasnkumar)
|
||||
|
||||
Flavio Poletti (polettix)
|
||||
|
||||
Salvador Fandiño (salva)
|
||||
|
||||
Gianni Ceccarelli (dakkar)
|
||||
|
||||
Pavel Shaydo (zwon, trinitum)
|
||||
|
||||
Kang-min Liu (劉康民, gugod)
|
||||
|
||||
Nicholas Shipp (nshp)
|
||||
|
||||
Juan Julián Merelo Guervós (JJ)
|
||||
|
||||
Joel Berger (JBERGER)
|
||||
|
||||
Petr Pisar (ppisar)
|
||||
|
||||
Lance Wicks (LANCEW)
|
||||
|
||||
Ahmad Fatoum (a3f, ATHREEF)
|
||||
|
||||
José Joaquín Atria (JJATRIA)
|
||||
|
||||
Duke Leto (LETO)
|
||||
|
||||
Shoichi Kaji (SKAJI)
|
||||
|
||||
Shawn Laffan (SLAFFAN)
|
||||
|
||||
Paul Evans (leonerd, PEVANS)
|
||||
|
||||
Håkon Hægland (hakonhagland, HAKONH)
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
This software is copyright (c) 2011-2020 by Graham Ollis.
|
||||
|
||||
This is free software; you can redistribute it and/or modify it under
|
||||
the same terms as the Perl 5 programming language system itself.
|
||||
|
||||
=cut
|
||||
172
database/perl/vendor/lib/Alien/Build/Plugin/Prefer/SortVersions.pm
vendored
Normal file
172
database/perl/vendor/lib/Alien/Build/Plugin/Prefer/SortVersions.pm
vendored
Normal file
@@ -0,0 +1,172 @@
|
||||
package Alien::Build::Plugin::Prefer::SortVersions;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use 5.008004;
|
||||
use Alien::Build::Plugin;
|
||||
|
||||
# ABSTRACT: Plugin to sort candidates by most recent first
|
||||
our $VERSION = '2.38'; # VERSION
|
||||
|
||||
|
||||
has 'filter' => undef;
|
||||
|
||||
|
||||
has '+version' => qr/([0-9](?:[0-9\.]*[0-9])?)/;
|
||||
|
||||
sub init
|
||||
{
|
||||
my($self, $meta) = @_;
|
||||
|
||||
$meta->add_requires('share' => 'Sort::Versions' => 0);
|
||||
|
||||
$meta->register_hook( prefer => sub {
|
||||
my(undef, $res) = @_;
|
||||
|
||||
my $cmp = sub {
|
||||
my($A,$B) = map { ($_ =~ $self->version)[0] } @_;
|
||||
Sort::Versions::versioncmp($B,$A);
|
||||
};
|
||||
|
||||
my @list = sort { $cmp->($a->{filename}, $b->{filename}) }
|
||||
map {
|
||||
($_->{version}) = $_->{filename} =~ $self->version;
|
||||
$_ }
|
||||
grep { $_->{filename} =~ $self->version }
|
||||
grep { defined $self->filter ? $_->{filename} =~ $self->filter : 1 }
|
||||
@{ $res->{list} };
|
||||
|
||||
return {
|
||||
type => 'list',
|
||||
list => \@list,
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Alien::Build::Plugin::Prefer::SortVersions - Plugin to sort candidates by most recent first
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
version 2.38
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use alienfile;
|
||||
|
||||
plugin 'Prefer::SortVersions';
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Note: in most case you will want to use L<Alien::Build::Plugin::Download::Negotiate>
|
||||
instead. It picks the appropriate fetch plugin based on your platform and environment.
|
||||
In some cases you may need to use this plugin directly instead.
|
||||
|
||||
This Prefer plugin sorts the packages that were retrieved from a dir listing, either
|
||||
directly from a Fetch plugin, or from a Decode plugin. It Returns a listing with the
|
||||
items sorted from post preferable to least, and filters out any undesirable candidates.
|
||||
|
||||
This plugin updates the file list to include the versions that are extracted, so they
|
||||
can be used by other plugins, such as L<Alien::Build::Plugin::Prefer::BadVersion>.
|
||||
|
||||
=head1 PROPERTIES
|
||||
|
||||
=head2 filter
|
||||
|
||||
This is a regular expression that lets you filter out files that you do not
|
||||
want to consider downloading. For example, if the directory listing contained
|
||||
tarballs and readme files like this:
|
||||
|
||||
foo-1.0.0.tar.gz
|
||||
foo-1.0.0.readme
|
||||
|
||||
You could specify a filter of C<qr/\.tar\.gz$/> to make sure only tarballs are
|
||||
considered for download.
|
||||
|
||||
=head2 version
|
||||
|
||||
Regular expression to parse out the version from a filename. The regular expression
|
||||
should store the result in C<$1>. The default C<qr/([0-9\.]+)/> is frequently
|
||||
reasonable.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<Alien::Build::Plugin::Download::Negotiate>, L<Alien::Build>, L<alienfile>, L<Alien::Build::MM>, L<Alien>
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Author: Graham Ollis E<lt>plicease@cpan.orgE<gt>
|
||||
|
||||
Contributors:
|
||||
|
||||
Diab Jerius (DJERIUS)
|
||||
|
||||
Roy Storey (KIWIROY)
|
||||
|
||||
Ilya Pavlov
|
||||
|
||||
David Mertens (run4flat)
|
||||
|
||||
Mark Nunberg (mordy, mnunberg)
|
||||
|
||||
Christian Walde (Mithaldu)
|
||||
|
||||
Brian Wightman (MidLifeXis)
|
||||
|
||||
Zaki Mughal (zmughal)
|
||||
|
||||
mohawk (mohawk2, ETJ)
|
||||
|
||||
Vikas N Kumar (vikasnkumar)
|
||||
|
||||
Flavio Poletti (polettix)
|
||||
|
||||
Salvador Fandiño (salva)
|
||||
|
||||
Gianni Ceccarelli (dakkar)
|
||||
|
||||
Pavel Shaydo (zwon, trinitum)
|
||||
|
||||
Kang-min Liu (劉康民, gugod)
|
||||
|
||||
Nicholas Shipp (nshp)
|
||||
|
||||
Juan Julián Merelo Guervós (JJ)
|
||||
|
||||
Joel Berger (JBERGER)
|
||||
|
||||
Petr Pisar (ppisar)
|
||||
|
||||
Lance Wicks (LANCEW)
|
||||
|
||||
Ahmad Fatoum (a3f, ATHREEF)
|
||||
|
||||
José Joaquín Atria (JJATRIA)
|
||||
|
||||
Duke Leto (LETO)
|
||||
|
||||
Shoichi Kaji (SKAJI)
|
||||
|
||||
Shawn Laffan (SLAFFAN)
|
||||
|
||||
Paul Evans (leonerd, PEVANS)
|
||||
|
||||
Håkon Hægland (hakonhagland, HAKONH)
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
This software is copyright (c) 2011-2020 by Graham Ollis.
|
||||
|
||||
This is free software; you can redistribute it and/or modify it under
|
||||
the same terms as the Perl 5 programming language system itself.
|
||||
|
||||
=cut
|
||||
Reference in New Issue
Block a user