Allow to set configuration values directly in the command line
This commit is contained in:
parent
55ee848e32
commit
8e7340da3d
@ -2,10 +2,51 @@
|
|||||||
|
|
||||||
use Symfony\Component\Console\Command\Command as SymfonyCommand;
|
use Symfony\Component\Console\Command\Command as SymfonyCommand;
|
||||||
use Symfony\Component\Console\Input\InputInterface;
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
|
use Symfony\Component\Console\Input\InputOption;
|
||||||
use Todaymade\Daux\Daux;
|
use Todaymade\Daux\Daux;
|
||||||
|
|
||||||
class DauxCommand extends SymfonyCommand
|
class DauxCommand extends SymfonyCommand
|
||||||
{
|
{
|
||||||
|
protected function configure()
|
||||||
|
{
|
||||||
|
$this
|
||||||
|
->addOption('configuration', 'c', InputOption::VALUE_REQUIRED, 'Configuration file')
|
||||||
|
->addOption('value', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Set different configuration values')
|
||||||
|
->addOption('source', 's', InputOption::VALUE_REQUIRED, 'Where to take the documentation from')
|
||||||
|
->addOption('processor', 'p', InputOption::VALUE_REQUIRED, 'Manipulations on the tree');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function setValue(&$array, $key, $value)
|
||||||
|
{
|
||||||
|
if (is_null($key)) {
|
||||||
|
return $array = $value;
|
||||||
|
}
|
||||||
|
$keys = explode('.', $key);
|
||||||
|
while (count($keys) > 1) {
|
||||||
|
$key = array_shift($keys);
|
||||||
|
if (! isset($array[$key]) || ! is_array($array[$key])) {
|
||||||
|
$array[$key] = [];
|
||||||
|
}
|
||||||
|
$array = &$array[$key];
|
||||||
|
}
|
||||||
|
$array[array_shift($keys)] = $value;
|
||||||
|
return $array;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function applyConfiguration(array $options, Daux $daux)
|
||||||
|
{
|
||||||
|
$values = array_map(
|
||||||
|
function ($value) {
|
||||||
|
return array_map("trim", explode('=', $value));
|
||||||
|
},
|
||||||
|
$options
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($values as $value) {
|
||||||
|
$this->setValue($daux->options, $value[0], $value[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected function prepareDaux(InputInterface $input)
|
protected function prepareDaux(InputInterface $input)
|
||||||
{
|
{
|
||||||
$daux = new Daux(Daux::STATIC_MODE);
|
$daux = new Daux(Daux::STATIC_MODE);
|
||||||
@ -30,6 +71,10 @@ class DauxCommand extends SymfonyCommand
|
|||||||
$daux->getParams()['confluence']['delete'] = true;
|
$daux->getParams()['confluence']['delete'] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($input->hasOption('value')) {
|
||||||
|
$this->applyConfiguration($input->getOption('value'), $daux);
|
||||||
|
}
|
||||||
|
|
||||||
return $daux;
|
return $daux;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,22 +11,21 @@ class Generate extends DauxCommand
|
|||||||
{
|
{
|
||||||
protected function configure()
|
protected function configure()
|
||||||
{
|
{
|
||||||
|
parent::configure();
|
||||||
|
|
||||||
$description = 'Destination folder, relative to the working directory';
|
$description = 'Destination folder, relative to the working directory';
|
||||||
|
|
||||||
$this
|
$this
|
||||||
->setName('generate')
|
->setName('generate')
|
||||||
->setDescription('Generate documentation')
|
->setDescription('Generate documentation')
|
||||||
|
|
||||||
->addOption('configuration', 'c', InputOption::VALUE_REQUIRED, 'Configuration file')
|
|
||||||
->addOption('source', 's', InputOption::VALUE_REQUIRED, 'Where to take the documentation from')
|
|
||||||
->addOption('format', 'f', InputOption::VALUE_REQUIRED, 'Output format, html or confluence', 'html')
|
->addOption('format', 'f', InputOption::VALUE_REQUIRED, 'Output format, html or confluence', 'html')
|
||||||
->addOption('processor', 'p', InputOption::VALUE_REQUIRED, 'Manipulations on the tree')
|
|
||||||
->addOption('themes', 't', InputOption::VALUE_REQUIRED, 'Set a different themes directory')
|
|
||||||
|
|
||||||
// Confluence format only
|
// Confluence format only
|
||||||
->addOption('delete', null, InputOption::VALUE_NONE, 'Delete pages not linked to a documentation page (confluence)')
|
->addOption('delete', null, InputOption::VALUE_NONE, 'Delete pages not linked to a documentation page (confluence)')
|
||||||
|
|
||||||
// HTML Format only
|
// HTML Format only
|
||||||
|
->addOption('themes', 't', InputOption::VALUE_REQUIRED, 'Set a different themes directory')
|
||||||
->addOption('destination', 'd', InputOption::VALUE_REQUIRED, $description, 'static')
|
->addOption('destination', 'd', InputOption::VALUE_REQUIRED, $description, 'static')
|
||||||
->addOption('search', null, InputOption::VALUE_NONE, 'Generate full text search');
|
->addOption('search', null, InputOption::VALUE_NONE, 'Generate full text search');
|
||||||
}
|
}
|
||||||
|
@ -13,15 +13,12 @@ class Serve extends DauxCommand
|
|||||||
{
|
{
|
||||||
protected function configure()
|
protected function configure()
|
||||||
{
|
{
|
||||||
|
parent::configure();
|
||||||
|
|
||||||
$this
|
$this
|
||||||
->setName('serve')
|
->setName('serve')
|
||||||
->setDescription('Serve documentation')
|
->setDescription('Serve documentation')
|
||||||
|
|
||||||
->addOption('configuration', 'c', InputOption::VALUE_REQUIRED, 'Configuration file')
|
|
||||||
->addOption('source', 's', InputOption::VALUE_REQUIRED, 'Where to take the documentation from')
|
|
||||||
->addOption('processor', 'p', InputOption::VALUE_REQUIRED, 'Manipulations on the tree')
|
|
||||||
->addOption('themes', 't', InputOption::VALUE_REQUIRED, 'Set a different themes directory')
|
|
||||||
|
|
||||||
// Serve the current documentation
|
// Serve the current documentation
|
||||||
->addOption('serve', null, InputOption::VALUE_NONE, 'Serve the current directory')
|
->addOption('serve', null, InputOption::VALUE_NONE, 'Serve the current directory')
|
||||||
->addOption('host', null, InputOption::VALUE_REQUIRED, 'The host to serve on', 'localhost')
|
->addOption('host', null, InputOption::VALUE_REQUIRED, 'The host to serve on', 'localhost')
|
||||||
|
Loading…
Reference in New Issue
Block a user