summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorRemi Collet <remi@remirepo.net>2018-01-25 13:30:20 +0100
committerRemi Collet <remi@remirepo.net>2018-01-25 13:30:20 +0100
commit7adc0cf86d301028e268f1803ee117bdd74586d5 (patch)
tree72a553f8a633e7ce498fe7579e49db972720ee04 /examples
parent4daae0625ceaf2aa7aba7bf0a7230044d346e256 (diff)
New function: array rpminfo(string path [, bool full ]);
Diffstat (limited to 'examples')
-rw-r--r--examples/repomanage.php21
1 files changed, 11 insertions, 10 deletions
diff --git a/examples/repomanage.php b/examples/repomanage.php
index 8428118..7682c3d 100644
--- a/examples/repomanage.php
+++ b/examples/repomanage.php
@@ -44,19 +44,20 @@ if (is_dir($rpms)) {
}
$tree = [];
-$handle = popen('rpm -qp --qf "%{NAME} %{EPOCHNUM} %{VERSION} %{RELEASE} %{ARCH} %{NEVR}\n" ' . $rpms . "/*.rpm", "r");
-while ($line = fgets($handle)) {
- $tab = explode(' ', trim($line));
- if (count($tab) == 6) {
- $tree[$tab[4]][$tab[0]][] = [
- 'name' => $tab[0],
- 'path' => $tab[5],
- 'evr' => "${tab[1]}:${tab[2]}-${tab[3]}",
- ];
+foreach(glob("$rpms/*.rpm") as $rpm) {
+ $info = rpminfo($rpm);
+ if (is_array($info)) {
+ $info['path'] = $rpm;
+ $info['evr'] = $info['Version'] . '-' . $info['Release'];
+ if (isset($info['Epoch'])) {
+ $info['evr'] = $info['Epoch'] . ":" . $info['evr'];
+ }
+ $tree[$info['Name']][$info['Arch']][] = $info;
} else {
- echo "Ignore $line\n";
+ echo "Skip $rpm\n";
}
}
+
foreach($tree as $arch => $subtree) {
foreach ($subtree as $name => $versions) {
if (count($versions) > $keep) {