InfoCommand improvements (#1562)

* Ignore error output of 'git rev-parse HEAD'
* Organize extension information in a table
This commit is contained in:
David Sevilla Martín 2018-09-03 18:24:07 -04:00 committed by Franz Liedke
parent ea207241f3
commit 12dfe12edb

View File

@ -14,6 +14,8 @@ namespace Flarum\Foundation\Console;
use Flarum\Console\AbstractCommand;
use Flarum\Extension\ExtensionManager;
use Flarum\Foundation\Application;
use Symfony\Component\Console\Helper\Table;
use Symfony\Component\Console\Helper\TableStyle;
class InfoCommand extends AbstractCommand
{
@ -62,14 +64,37 @@ class InfoCommand extends AbstractCommand
$phpExtensions = implode(', ', get_loaded_extensions());
$this->info("Loaded extensions: $phpExtensions");
$table = new Table($this->output);
$table->setHeaders([
[
'Flarum Extensions'
],
[
'ID',
'Version',
'Commit'
]
])->setStyle(
(new TableStyle())
->setCellRowFormat('<info>%s</info>')
->setBorderFormat('<info>%s</info>')
);
foreach ($this->extensions->getEnabledExtensions() as $extension) {
/* @var \Flarum\Extension\Extension $extension */
$name = $extension->getId();
$version = $this->findPackageVersion($extension->getPath(), $extension->getVersion());
$fallback = $extension->getVersion();
$version = $this->findPackageVersion($extension->getPath());
$this->info("EXT $name $version");
$table->addRow([
$name,
$fallback,
$version
]);
}
$table->render();
$this->info('Base URL: '.$this->config['url']);
$this->info('Installation path: '.getcwd());
$this->info('Debug mode '.($this->config['debug'] ? 'ON' : 'off'));
@ -91,7 +116,7 @@ class InfoCommand extends AbstractCommand
* @param string $fallback
* @return string
*/
private function findPackageVersion($path, $fallback)
private function findPackageVersion($path, $fallback = null)
{
if (file_exists("$path/.git")) {
$cwd = getcwd();
@ -99,12 +124,12 @@ class InfoCommand extends AbstractCommand
$output = [];
$status = null;
exec('git rev-parse HEAD', $output, $status);
exec('git rev-parse HEAD 2> /dev/null', $output, $status);
chdir($cwd);
if ($status == 0) {
return "$fallback ($output[0])";
return isset($fallback) ? "$fallback ($output[0])" : $output[0];
}
}