magallanes/Mage/Command/BuiltIn/ListCommand.php

93 lines
2.6 KiB
PHP

<?php
/*
* This file is part of the Magallanes package.
*
* (c) Andrés Montañez <andres@andresmontanez.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Mage\Command\BuiltIn;
use Mage\Command\AbstractCommand;
use Mage\Console;
use Exception;
/**
* Adds elements to the Configuration.
* Currently elements allowed to add:
* - environments
*
* @author Andrés Montañez <andres@andresmontanez.com>
*/
class ListCommand extends AbstractCommand
{
public function __construct()
{
$this->setName('List command')
->setHelpMessage('List available configurations. For now, only environments listing available')
->setSyntaxMessage('mage list [environments]')
->addUsageExample(
'mage list environments',
'List currently configured environments'
);
}
/**
* Command for Listing Configuration Elements
* @see \Mage\Command\AbstractCommand::run()
* @throws Exception
*/
public function run()
{
$exitCode = 221;
$subCommand = $this->getConfig()->getArgument(1);
try {
switch ($subCommand) {
case 'environments':
$exitCode = $this->listEnvironments();
break;
default:
throw new Exception('The Type of Elements to List is needed.');
break;
}
} catch (Exception $e) {
Console::output('<red>' . $e->getMessage() . '</red>', 1, 2);
}
return $exitCode;
}
/**
* Lists the Environments
*/
protected function listEnvironments()
{
$exitCode = 220;
$environments = array();
$content = scandir(getcwd() . '/.mage/config/environment/');
foreach ($content as $file) {
if (strpos($file, '.yml') !== false) {
$environments[] = str_replace('.yml', '', $file);
}
}
sort($environments);
if (count($environments) > 0) {
Console::output('<bold>These are your configured environments:</bold>', 1, 1);
foreach ($environments as $environment) {
Console::output('* <light_red>' . $environment . '</light_red>', 2, 1);
}
Console::output('', 1, 1);
$exitCode = 0;
} else {
Console::output('<bold>You don\'t have any environment configured.</bold>', 1, 2);
}
return $exitCode;
}
}