/usr/share/perl5/Dist/Zilla/PluginBundle/Filter.pm is in libdist-zilla-perl 5.008-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | package Dist::Zilla::PluginBundle::Filter;
{
$Dist::Zilla::PluginBundle::Filter::VERSION = '5.008';
}
# ABSTRACT: use another bundle, with some plugins removed
use Moose;
use Moose::Autobox;
with 'Dist::Zilla::Role::PluginBundle';
use namespace::autoclean;
use Class::Load qw(try_load_class);
use Dist::Zilla::Util;
sub mvp_multivalue_args { qw(remove -remove) }
sub bundle_config {
my ($self, $section) = @_;
my $class = (ref $self) || $self;
my $config = {};
my $has_filter_args = $section->{payload}->keys->grep(sub { /^-/ })->length;
for my $key ($section->{payload}->keys->flatten) {
my $val = $section->{payload}->{$key};
my $target = $has_filter_args && ($key !~ /^-/)
? 'bundle'
: 'filter';
$key =~ s/^-// if $target eq 'filter';
$config->{$target}->{$key} = $val;
}
Carp::croak("no bundle given for bundle filter")
unless my $bundle = $config->{filter}->{bundle};
my $pkg = Dist::Zilla::Util->expand_config_package_name($bundle);
my $load_opts = {};
if( my $v = $config->{filter}->{version} ){
$load_opts->{'-version'} = $v;
}
unless (try_load_class($pkg, $load_opts)) {
# XXX Naughty! -- rjbs, 2013-07-23
Config::MVP::Section->missing_package($pkg, $bundle);
}
my @plugins = $pkg->bundle_config({
name => $section->{name}, # not 100% sure about this -- rjbs, 2010-03-06
package => $pkg,
payload => $config->{bundle} || {},
});
return @plugins unless my $remove = $config->{filter}->{remove};
require List::MoreUtils;
for my $i (reverse 0 .. $#plugins) {
splice @plugins, $i, 1 if List::MoreUtils::any(sub {
$plugins[$i][1] eq Dist::Zilla::Util->expand_config_package_name($_)
}, @$remove);
}
return @plugins;
}
__PACKAGE__->meta->make_immutable;
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Dist::Zilla::PluginBundle::Filter - use another bundle, with some plugins removed
=head1 VERSION
version 5.008
=head1 SYNOPSIS
In your F<dist.ini>:
[@Filter]
-bundle = @Basic
-remove = ShareDir
-remove = UploadToCPAN
option = for_basic
=head1 DESCRIPTION
This plugin bundle actually wraps and modifies another plugin bundle. It
includes all the configuration for the bundle named in the C<-bundle> attribute,
but removes all the entries whose package is given in the C<-remove> attributes.
Options not prefixed with C<-> will be passed to the bundle to be filtered.
=head1 SEE ALSO
Core Dist::Zilla plugins: L<@Basic|Dist::Zilla::PluginBundle::Basic>.
Dist::Zilla roles: L<PluginBundle|Dist::Zilla::Role::PluginBundle>.
=head1 AUTHOR
Ricardo SIGNES <rjbs@cpan.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by Ricardo SIGNES.
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
|