Ejemplo n.º 1
0
 function doPackageDependencies($command, $options, $params)
 {
     // $params[0] -> the PEAR package to list its information
     if (sizeof($params) != 1) {
         return $this->raiseError("bad parameter(s), try \"help {$command}\"");
     }
     $obj = new PEAR_Common();
     if (PEAR::isError($info = $obj->infoFromAny($params[0]))) {
         return $this->raiseError($info);
     }
     if (is_array($info['release_deps'])) {
         $data = array('caption' => 'Dependencies for ' . $info['package'], 'border' => true, 'headline' => array("Type", "Name", "Relation", "Version"));
         foreach ($info['release_deps'] as $d) {
             if (isset($this->_deps_rel_trans[$d['rel']])) {
                 $rel = $this->_deps_rel_trans[$d['rel']];
             } else {
                 $rel = $d['rel'];
             }
             if (isset($this->_deps_type_trans[$d['type']])) {
                 $type = ucfirst($this->_deps_type_trans[$d['type']]);
             } else {
                 $type = $d['type'];
             }
             if (isset($d['name'])) {
                 $name = $d['name'];
             } else {
                 $name = '';
             }
             if (isset($d['version'])) {
                 $version = $d['version'];
             } else {
                 $version = '';
             }
             $data['data'][] = array($type, $name, $rel, $version);
         }
         $this->ui->outputData($data, $command);
         return true;
     }
     // Fallback
     $this->ui->outputData("This package does not have any dependencies.", $command);
 }
Ejemplo n.º 2
0
 function doInfo($command, $options, $params)
 {
     // $params[0] The package for showing info
     if (sizeof($params) != 1) {
         return $this->raiseError("This command only accepts one param: " . "the package you want information");
     }
     if (@is_file($params[0])) {
         $obj = new PEAR_Common();
         $info = $obj->infoFromAny($params[0]);
     } else {
         $reg = new PEAR_Registry($this->config->get('php_dir'));
         $info = $reg->packageInfo($params[0]);
     }
     if (PEAR::isError($info)) {
         return $info;
     }
     if (empty($info)) {
         $this->raiseError("Nothing found for `{$params['0']}'");
         return;
     }
     unset($info['filelist']);
     unset($info['changelog']);
     $keys = array_keys($info);
     $longtext = array('description', 'summary');
     foreach ($keys as $key) {
         if (is_array($info[$key])) {
             switch ($key) {
                 case 'maintainers':
                     $i = 0;
                     $mstr = '';
                     foreach ($info[$key] as $m) {
                         if ($i++ > 0) {
                             $mstr .= "\n";
                         }
                         $mstr .= $m['name'] . " <";
                         if (isset($m['email'])) {
                             $mstr .= $m['email'];
                         } else {
                             $mstr .= $m['handle'] . '@php.net';
                         }
                         $mstr .= "> ({$m['role']})";
                     }
                     $info[$key] = $mstr;
                     break;
                 case 'release_deps':
                     $i = 0;
                     $dstr = '';
                     foreach ($info[$key] as $d) {
                         if (isset($this->_deps_rel_trans[$d['rel']])) {
                             $rel = $this->_deps_rel_trans[$d['rel']];
                         } else {
                             $rel = $d['rel'];
                         }
                         if (isset($this->_deps_type_trans[$d['type']])) {
                             $type = ucfirst($this->_deps_type_trans[$d['type']]);
                         } else {
                             $type = $d['type'];
                         }
                         if (isset($d['name'])) {
                             $name = $d['name'] . ' ';
                         } else {
                             $name = '';
                         }
                         if (isset($d['version'])) {
                             $version = $d['version'] . ' ';
                         } else {
                             $version = '';
                         }
                         $dstr .= "{$type} {$name}{$rel} {$version}\n";
                     }
                     $info[$key] = $dstr;
                     break;
                 case 'provides':
                     $debug = $this->config->get('verbose');
                     if ($debug < 2) {
                         $pstr = 'Classes: ';
                     } else {
                         $pstr = '';
                     }
                     $i = 0;
                     foreach ($info[$key] as $p) {
                         if ($debug < 2 && $p['type'] != "class") {
                             continue;
                         }
                         // Only print classes when verbosity mode is < 2
                         if ($debug < 2) {
                             if ($i++ > 0) {
                                 $pstr .= ", ";
                             }
                             $pstr .= $p['name'];
                         } else {
                             if ($i++ > 0) {
                                 $pstr .= "\n";
                             }
                             $pstr .= ucfirst($p['type']) . " " . $p['name'];
                             if (isset($p['explicit']) && $p['explicit'] == 1) {
                                 $pstr .= " (explicit)";
                             }
                         }
                     }
                     $info[$key] = $pstr;
                     break;
                 default:
                     $info[$key] = implode(", ", $info[$key]);
                     break;
             }
         }
         if ($key == '_lastmodified') {
             $hdate = date('Y-m-d', $info[$key]);
             unset($info[$key]);
             $info['Last Modified'] = $hdate;
         } else {
             $info[$key] = trim($info[$key]);
             if (in_array($key, $longtext)) {
                 $info[$key] = preg_replace('/  +/', ' ', $info[$key]);
             }
         }
     }
     $caption = 'About ' . $info['package'] . '-' . $info['version'];
     $data = array('caption' => $caption, 'border' => true);
     foreach ($info as $key => $value) {
         $key = ucwords(trim(str_replace('_', ' ', $key)));
         $data['data'][] = array($key, $value);
     }
     $data['raw'] = $info;
     $this->ui->outputData($data, 'package-info');
 }