diff options
Diffstat (limited to 'lib/Youri/Package/RPM.pm')
-rw-r--r-- | lib/Youri/Package/RPM.pm | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/Youri/Package/RPM.pm b/lib/Youri/Package/RPM.pm new file mode 100644 index 0000000..1f72830 --- /dev/null +++ b/lib/Youri/Package/RPM.pm @@ -0,0 +1,58 @@ +# $Id: /local/youri/soft/trunk/lib/Youri/Package/URPM.pm 2257 2006-07-05T09:22:47.088572Z guillaume $ +package Youri::Package::RPM; + +=head1 NAME + +Youri::Package::RPM - Base class for all RPM-based package implementation + +=head1 DESCRIPTION + +This bases class factorize code between various RPM-based package +implementation. + +=cut + +use strict; +use warnings; +use base 'Youri::Package'; +use Carp; + +sub get_pattern { + my ($class, $name, $version, $release, $arch) = @_; + + return + ($name ? quotemeta($name) : '[\w-]+' ). + '-' . + ($version ? quotemeta($version) : '[^-]+' ). + '-' . + ($release ? quotemeta($release) : '[^-]+' ). + '\.' . + ($arch ? quotemeta($arch) : '\w+' ). + '\.rpm'; +} + +sub as_file { + my ($self) = @_; + croak "Not a class method" unless ref $self; + + return $self->{_file}; +} + +sub is_debug { + my ($self) = @_; + croak "Not a class method" unless ref $self; + + my $name = $self->get_name(); + my $group = $self->get_tag('group'); + + # debug packages' names must end in -debug, except kernel + if ($group =~ m,^Development/Debug$, && + ($name =~ /-debug$/o || $name =~ /^kernel-.*-debug/o)) { + return 1; + } + else { + return 0; + } +} + +1; |