From fafd3ef12512c7a7832a93de14b668bed1922f1c Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Sun, 23 May 2010 18:35:55 +0200 Subject: add FedoraPkgdb->getPackageInfo() --- FedoraClient.php | 24 +++++++++++++++++++++--- fedcli.php | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 3 deletions(-) diff --git a/FedoraClient.php b/FedoraClient.php index 1a33ac9..1d0ce71 100644 --- a/FedoraClient.php +++ b/FedoraClient.php @@ -57,7 +57,7 @@ abstract class FedoraClient { function sendRequest($method, array $options=array()) { $curl = curl_init(); # And join to make our url. - $url = $this->url.urlencode($method); + $url = $this->url.$method; curl_setopt($curl, CURLOPT_URL, $url); # Boilerplate so pycurl processes cookies curl_setopt($curl, CURLOPT_COOKIEFILE, '/dev/null'); @@ -118,11 +118,11 @@ class FedoraPkgdb extends FedoraClient { function getBranches($refresh=false) { $rep = ($refresh ? false : $this->cache->get(__FUNCTION__,__CLASS__)); if ($rep) { - $this->logDebug(2,__CLASS__."::".__FUNCTION__." get from cache"); + $this->logDebug(2,__CLASS__."::".__FUNCTION__."() get from cache"); } else { $rep =$this->sendRequest('collections'); $this->cache->save($rep,__FUNCTION__,__CLASS__); - $this->logDebug(2,__CLASS__."::".__FUNCTION__." save to cache"); + $this->logDebug(2,__CLASS__."::".__FUNCTION__."() save to cache"); } $branches = array(); @@ -134,6 +134,24 @@ class FedoraPkgdb extends FedoraClient { return $branches; } + function getPackageInfo($name, $refresh=false) { + $url="acls/name/$name"; + $rep = ($refresh ? false : $this->cache->get($url,__CLASS__)); + if ($rep) { + $this->logDebug(2,__CLASS__."::".__FUNCTION__."($name) get from cache"); + } else { + $rep =$this->sendRequest($url); + $this->cache->save($rep,$url,__CLASS__); + $this->logDebug(2,__CLASS__."::".__FUNCTION__."($name) save to cache"); + } + + if (isset($rep['status']) && !$rep['status']) { + $this->logDebug(1,__CLASS__."::".__FUNCTION__."($name) ".$rep['message']); + return false; + } + return $rep; + } + function getBranch($name, $refresh=false) { $branches = $this->getBranches($refresh); diff --git a/fedcli.php b/fedcli.php index d8439ff..81bff3d 100755 --- a/fedcli.php +++ b/fedcli.php @@ -30,7 +30,9 @@ function Help() { echo "\nFedora Client Command Line usage\n\n"; echo "fdcli command options\n"; + echo "\tbranch: branch info\n"; echo "\tbranches: list branches\n"; + echo "\tpackage: package info\n"; echo "\tversion: class version\n"; echo "Also try fdcli command --help\n"; } @@ -69,6 +71,44 @@ function Branch() { print_r($branch); } +function Package() { + $config = array( + "package" => array('short' => 'p', 'max' => 1, 'min' => 1, 'desc' => "package name"), + "debug" => array('short' => 'd', 'max' => 1, 'min' => 1, 'desc' => "debug level", 'default' => "0") + ); + $args =& Console_Getargs::factory($config); + + if (PEAR::isError($args)) { + die (Console_Getargs::getHelp($config)); + } + $client = new FedoraPkgdb(array('debug' => intval($args->getValue('debug')))); + $rep = $client->getPackageInfo($args->getValue('package')); + + if (!$rep) { + die("Package not found\n"); + } + if (isset($rep['title'])) { + echo $rep['title']."\n"; + } + $first = true; + foreach ($rep['packageListings'] as $pack) { + if ($first) { + $first = false; + echo 'Summary: '.$pack['package']['summary']."\n"; + echo 'Description: '.$pack['package']['description']."\n"; + } + echo $pack['collection']['branchname'].": ".$pack['owner']; + + $i=0; + foreach ($pack['people'] as $user) { + if (isset($user['aclOrder']['commit']['statuscode']) && $user['aclOrder']['commit']['statuscode']==3) { + echo ($i++ ? ", " : " (").$user['username']; + } + } + echo ($i ? ")\n" : "\n"); + } +} + function Version() { $config = array( "debug" => array('short' => 'd', 'max' => 1, 'min' => 1, 'desc' => "debug level", 'default' => "0") @@ -88,6 +128,7 @@ $cmd = array_shift($_SERVER['argv']); switch ($cmd) { case 'branches': Branches(); break; case 'branch': Branch(); break; + case 'package': Package(); break; case 'version': Version(); break; default: Help(); } -- cgit