blob: e8451b903f3fe62b7baba9c3aa94704f6ed757f7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#!/usr/bin/php
<?php
if (!extension_loaded("rpminfo")) die("rpminfo extension is missing\n");
define('MODE_PREVIEW', 1);
define('MODE_DELETE', 2);
$mode = 0;
$keep = 0;
$dest = false;
$multi = [
'php' => 3,
'redis' => 1,
'composer' => 1,
];
if (isset($_SERVER['argv'][1])) {
$keep = (int)$_SERVER['argv'][1];
}
if (!$keep) {
printf("\nusage %s number [ trash_path ]\n\n", $_SERVER['argv'][0]);
die("Number to keep is missing\n");
}
if (isset($_SERVER['argv'][2])) {
$dest = $_SERVER['argv'][2];
if (!is_dir($dest)) {
die("$dest is not a directory\n");
}
}
$rpms = [];
foreach (glob("*.rpm") as $name) {
$info = rpminfo($name);
$i = $info['Name'];
if (isset($multi[$i])) {
$i .= "/" . substr($info['Version'], 0, $multi[$i]);
}
$ver = $info['Version'] . '-' . $info['Release'];
if (isset($info['Epoch'])) {
$ver = $info['Epoch'] . ':' . $ver;
}
$rpms[$i][$ver] = $name;
}
foreach($rpms as $n => $rpm) {
if (count($rpm) > $keep) {
uksort($rpm, "rpmvercmp");
$i = count($rpm) - $keep;
while ($i--) {
$name = array_shift($rpm);
echo "\t$name\n";
if ($dest) rename($name, "$dest/$name");
}
}
}
|