From 21241e687dc475ddcbfe7a711d72b2858f8b9448 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 8 Feb 2018 14:42:02 +0100 Subject: add example: minimal userlan OO library --- examples/librpm.php | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 examples/librpm.php (limited to 'examples') diff --git a/examples/librpm.php b/examples/librpm.php new file mode 100644 index 0000000..90082e0 --- /dev/null +++ b/examples/librpm.php @@ -0,0 +1,78 @@ +info['Name'] . '-'; + } + if (isset($this->info['Epoch'])) { + $ret .= $this->info['Epoch'] . ':'; + } + $ret .= $this->info['Version'] . '-' . $this->info['Release']; + + if (substr($name, -1) === 'A') { + $ret .= '.' . $this->info['Arch']; + } + return $ret; + default: + if (isset($this->info[$name])) { + return $this->info[$name]; + } + return NULL; + } + } +} + +/** + * From a RPM file + * + * $a = new \Remi\RPM\File(dirname(__DIR__) . '/tests/bidon.rpm'); + * var_dump($a->Vendor); + * var_dump($a->NEVRA); + **/ +class File extends Common { + + public function __construct($path) { + $info = rpminfo($path, true, $error); + + if ($error) { + throw new \RuntimeException($error); + } else { + $this->info = $info; + } + } +} + +/** + * From an installed RPM + * + * $a = new \Remi\RPM\Package('php'); + * var_dump($a->License); + * var_dump($a->NEVRA); + **/ +class Package extends Common { + + public function __construct($name, $index=0) { + $info = rpmdbinfo($name, true); + + if (!$info) { + throw new \RuntimeException("$name not found"); + } else if ($index < 0 || $index >= count($info)) { + throw new \OutOfBoundsException("$index not in range"); + } else { + $this->info = $info[$index]; + } + } +} + -- cgit