diff options
Diffstat (limited to 'urpm/xml_info_pkg.pm')
-rw-r--r-- | urpm/xml_info_pkg.pm | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/urpm/xml_info_pkg.pm b/urpm/xml_info_pkg.pm new file mode 100644 index 00000000..ce0fb0cd --- /dev/null +++ b/urpm/xml_info_pkg.pm @@ -0,0 +1,46 @@ +package urpm::xml_info_pkg; + +# proxy object: returns the xml info if available, otherwise redirects to URPM::Package + +sub new { + my ($class, $hash, $pkg) = @_; + + $pkg and $hash->{pkg} = $pkg; + + bless $hash, $class; +} + + +# only available in synthesis/hdlist +sub id { $_[0]{pkg}->id } +sub group { $_[0]{pkg}->group } +sub size { $_[0]{pkg}->size } +sub epoch { $_[0]{pkg}->epoch } +sub buildhost { $_[0]{pkg}->buildhost } +sub packager { $_[0]{pkg}->packager } +sub summary { $_[0]{pkg}->summary } + + +# can be directly available in xml_info +sub url { exists $_[0]{url} ? $_[0]{url} : $_[0]{pkg}->url } +sub licence { exists $_[0]{licence} ? $_[0]{licence} : $_[0]{pkg}->licence } +sub sourcerpm { exists $_[0]{sourcerpm} ? $_[0]{sourcerpm} : $_[0]{pkg}->sourcerpm } +sub description { exists $_[0]{description} ? $_[0]{description} : $_[0]{pkg}->description } + +sub changelogs { exists $_[0]{changelogs} ? @{$_[0]{changelogs}} : $_[0]{pkg}->changelogs } + +sub files { exists $_[0]{files} ? split("\n", $_[0]{files}) : $_[0]{pkg}->files } + +my $fullname_re = qr/^(.*)-([^\-]*)-([^\-]*)\.([^\.\-]*)$/; + +# available in both {pkg} and {fn} +sub name { exists $_[0]{pkg} ? $_[0]{pkg}->name : $_[0]{fn} =~ $fullname_re && $1 } +sub version { exists $_[0]{pkg} ? $_[0]{pkg}->version : $_[0]{fn} =~ $fullname_re && $2 } +sub release { exists $_[0]{pkg} ? $_[0]{pkg}->release : $_[0]{fn} =~ $fullname_re && $3 } +sub arch { exists $_[0]{pkg} ? $_[0]{pkg}->arch : $_[0]{fn} =~ $fullname_re && $4 } + +sub fullname { wantarray ? $_[0]{pkg}->fullname : $_[0]{fn} } +sub filename { $_[0]{fn} . '.rpm' } + + +1; |