summaryrefslogtreecommitdiff
path: root/scripts/Dpkg/Dist/Files.pm
diff options
context:
space:
mode:
authorGuillem Jover <guillem@debian.org>2015-03-18 23:18:11 +0100
committerGuillem Jover <guillem@debian.org>2015-05-18 02:00:25 +0200
commita58dd78cb1667a26961f07ba80f0f2d676e41959 (patch)
tree366c5e95b14d223773529d3075a07a2d75ae5e8a /scripts/Dpkg/Dist/Files.pm
parentb9cec509388cb444b1acf4baa69c90a4ef9e9241 (diff)
downloaddpkg-a58dd78cb1667a26961f07ba80f0f2d676e41959.tar.gz
Dpkg::Dist::Files: Add new filter() method
Diffstat (limited to 'scripts/Dpkg/Dist/Files.pm')
-rw-r--r--scripts/Dpkg/Dist/Files.pm14
1 files changed, 14 insertions, 0 deletions
diff --git a/scripts/Dpkg/Dist/Files.pm b/scripts/Dpkg/Dist/Files.pm
index eedea4222..719026f31 100644
--- a/scripts/Dpkg/Dist/Files.pm
+++ b/scripts/Dpkg/Dist/Files.pm
@@ -130,6 +130,20 @@ sub del_file {
delete $self->{files}->{$filename};
}
+sub filter {
+ my ($self, %opts) = @_;
+ my $remove = $opts{remove} // sub { 0 };
+ my $keep = $opts{keep} // sub { 1 };
+
+ foreach my $filename (keys %{$self->{files}}) {
+ my $file = $self->{files}->{$filename};
+
+ if (not &$keep($file) or &$remove($file)) {
+ delete $self->{files}->{$filename};
+ }
+ }
+}
+
sub output {
my ($self, $fh) = @_;
my $str = '';