aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Thauvin <nanardon@mandriva.org>2004-04-18 23:15:37 +0000
committerOlivier Thauvin <nanardon@mandriva.org>2004-04-18 23:15:37 +0000
commit5e2dce8c729730cba981d35fe431ccfd689661df (patch)
treec27167e06851066157b94788b1ee5a719f934efe
parent2b6f8157feaaa81b00604a3f0a383ae06df36e0c (diff)
downloadperl-URPM-5e2dce8c729730cba981d35fe431ccfd689661df.tar
perl-URPM-5e2dce8c729730cba981d35fe431ccfd689661df.tar.gz
perl-URPM-5e2dce8c729730cba981d35fe431ccfd689661df.tar.bz2
perl-URPM-5e2dce8c729730cba981d35fe431ccfd689661df.tar.xz
perl-URPM-5e2dce8c729730cba981d35fe431ccfd689661df.zip
- add query_pkg function
- transmit %options to parse_rpm in parse_rpms_build_headers
-rw-r--r--URPM/Build.pm2
-rw-r--r--URPM/Query.pm20
2 files changed, 21 insertions, 1 deletions
diff --git a/URPM/Build.pm b/URPM/Build.pm
index 88e6d5b..4e37edb 100644
--- a/URPM/Build.pm
+++ b/URPM/Build.pm
@@ -55,7 +55,7 @@ sub parse_rpms_build_headers {
$filename = $cache{$key}{file};
} else {
- ($id, undef) = $urpm->parse_rpm($_);
+ ($id, undef) = $urpm->parse_rpm($_, %options);
unless (defined $id) {
if ($options{dontdie}) {
print STDERR "bad rpm $_\n";
diff --git a/URPM/Query.pm b/URPM/Query.pm
index 6e639c8..7929ce6 100644
--- a/URPM/Query.pm
+++ b/URPM/Query.pm
@@ -188,4 +188,24 @@ sub id2tag {
@ret
}
+sub query_pkg {
+ my ($urpm, $pkg, $query) = @_;
+ my @tags = map {
+ [ $pkg->get_tag(tag2id($_)) ]
+ } $query =~ m/\%\{([^{}]*)\}*/g;
+
+ $query =~ s/\%\{[^{}]*\}/%s/g;
+ $query =~ s/\\n/\n/g;
+ $query =~ s/\\t/\t/g;
+ my ($max, @res) = 0;
+
+ foreach (@tags) { $max < $#{$_} and $max = $#{$_} };
+
+ foreach my $i (0 .. $max) {
+ push(@res, sprintf($query, map { ${$_}[ $#{$_} < $i ? $#{$_} : $i ] } @tags));
+ }
+ @res
+}
+
+
1;