diff options
-rw-r--r-- | lib/Youri/Submit/Check/Rpmlint.pm | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/lib/Youri/Submit/Check/Rpmlint.pm b/lib/Youri/Submit/Check/Rpmlint.pm index 95c31e4..a58e283 100644 --- a/lib/Youri/Submit/Check/Rpmlint.pm +++ b/lib/Youri/Submit/Check/Rpmlint.pm @@ -7,7 +7,8 @@ Youri::Submit::Check::Rpmlint - Rpmlint-based check =head1 DESCRIPTION -This check plugin wraps rpmlint, and reject packages triggering rpmlint errors. +This check plugin wraps rpmlint, and reject packages triggering results +declared as fatal. =cut @@ -24,6 +25,10 @@ Specific parameters: =over +=item results $results + +List of rpmlint result id considered as fatal. + =item path $path Path to the rpmlint executable (default: /usr/bin/rpmlint) @@ -40,13 +45,18 @@ Specific rpmlint configuration. sub _init { my $self = shift; my %options = ( + results => undef, path => '/usr/bin/rpmlint', config => '', @_ ); + croak "no results to check" unless $options{results}; + croak "fatal should be an arrayref" unless ref $options{results} eq 'ARRAY'; + $self->{_config} = $options{config}; $self->{_path} = $options{path}; + $self->{_pattern} = '^(?:' . join('|', @{$options{results}}) . ')$'; } sub run { @@ -58,10 +68,12 @@ sub run { my $command = "$self->{_path} -f $self->{_config} " . $package->as_file; open(my $RPMLINT, "$command |") or die "Can't run $command: $!"; while (my $line = <$RPMLINT>) { - $line =~ /^E: \S+ (\S+)(.*)$/ # old rpmlint format - || $line =~ /^\S+: E: (\S+)(.*)$/ or next; # new rpmlint format + $line =~ /^[EW]: \S+ (\S+)(.*)$/ # old rpmlint format + || $line =~ /^\S+: [EW]: (\S+)(.*)$/ or next; # new rpmlint format my ($id, $value) = ($1, $2); - push(@errors, "$id$value"); + if ($id =~ /$self->{_pattern}/o) { + push(@errors, "$id$value"); + } } return @errors; |