浏览代码

Merge remote-tracking branch 'KingCrunch/pretty-show'

Jordi Boggiano 12 年之前
父节点
当前提交
211ca0c826
共有 1 个文件被更改,包括 26 次插入1 次删除
  1. 26 1
      src/Composer/Command/ShowCommand.php

+ 26 - 1
src/Composer/Command/ShowCommand.php

@@ -139,8 +139,33 @@ EOT
             if (isset($packages[$type])) {
                 $output->writeln($type);
                 ksort($packages[$type]);
+
+                $nameLength = $versionLength = 0;
                 foreach ($packages[$type] as $package) {
-                    $output->writeln('  '.$package->getPrettyName() .' '.($showVersion ? '['.$this->versionParser->formatVersion($package).']' : '').' <comment>:</comment> '. strtok($package->getDescription(), "\r\n"));
+                    $nameLength = max($nameLength, strlen($package->getPrettyName()));
+                    $versionLength = max($versionLength, strlen($this->versionParser->formatVersion($package)));
+                }
+                list($width) = $this->getApplication()->getTerminalDimensions();
+
+                $writeVersion = $showVersion && ($nameLength + $versionLength + 3 <= $width);
+                $writeDescription = $nameLength + ($showVersion ? $versionLength : 0) + 24 <= $width;
+                foreach ($packages[$type] as $package) {
+                    $output->write('  ' . str_pad($package->getPrettyName(), $nameLength, ' '), false);
+
+                    if ($writeVersion) {
+                        $output->write(' ' . str_pad($this->versionParser->formatVersion($package), $versionLength, ' '), false);
+                    }
+
+                    if ($writeDescription) {
+                        $description = strtok($package->getDescription(), "\r\n");
+                        $remaining = $width - $nameLength - $versionLength - 4;
+                        if (strlen($description) > $remaining) {
+                            $description = substr($description, 0, $remaining - 3) . '...';
+                        }
+                        $output->write(' ' . $description);
+
+                    }
+                    $output->writeln('');
                 }
                 $output->writeln('');
             }