aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Youri/Package/RPM.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Youri/Package/RPM.pm')
-rw-r--r--lib/Youri/Package/RPM.pm58
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;