Add a confluence configuration checker. Allow configuration overrides on daux command

This commit is contained in:
Stéphane Goetz 2016-09-15 17:20:24 +02:00
parent a40769b48a
commit 519e85b5dc
4 changed files with 78 additions and 5 deletions

View File

@ -129,4 +129,23 @@ class Config extends ArrayObject
return $this['html']['inherit_index']; return $this['html']['inherit_index'];
} }
public function setConfigurationOverrideFile($override_file)
{
$this['override_file'] = $override_file;
}
public function getConfigurationOverrideFile()
{
if (array_key_exists('override_file', $this)) {
return $this['override_file'];
}
return null;
}
public function getConfluenceConfiguration()
{
return $this['confluence'];
}
} }

View File

@ -42,9 +42,9 @@ class Serve extends DauxCommand
putenv('DAUX_SOURCE=' . $daux->getParams()->getDocumentationDirectory()); putenv('DAUX_SOURCE=' . $daux->getParams()->getDocumentationDirectory());
putenv('DAUX_THEME=' . $daux->getParams()->getThemesPath()); putenv('DAUX_THEME=' . $daux->getParams()->getThemesPath());
putenv('DAUX_CONFIGURATION=' . $daux->getParams()->getConfigurationOverrideFile());
//TODO :: support configuration and processor //TODO :: support processor
//putenv('DAUX_CONFIGURATION=' . $daux->getParams()->getConfigurationFile());
//putenv('DAUX_PROCESSOR=' . $daux->getParams()->getProcessorFile()); //putenv('DAUX_PROCESSOR=' . $daux->getParams()->getProcessorFile());
$base = ProcessUtils::escapeArgument(__DIR__ . '/../../'); $base = ProcessUtils::escapeArgument(__DIR__ . '/../../');

View File

@ -68,7 +68,7 @@ class Daux
* @param string $override_file * @param string $override_file
* @throws Exception * @throws Exception
*/ */
public function initializeConfiguration($override_file = 'config.json') public function initializeConfiguration($override_file = null)
{ {
$params = $this->getParams(); $params = $this->getParams();
@ -79,8 +79,10 @@ class Daux
$this->loadConfiguration($docs_path . DIRECTORY_SEPARATOR . 'config.json'); $this->loadConfiguration($docs_path . DIRECTORY_SEPARATOR . 'config.json');
// Read command line overrides // Read command line overrides
if (!is_null($override_file)) { $override_file = $this->getConfigurationOverride($override_file);
$this->loadConfiguration($this->local_base . DIRECTORY_SEPARATOR . $override_file); if ($override_file != null) {
$params->setConfigurationOverrideFile($override_file);
$this->loadConfiguration($override_file);
} }
// Validate and set theme path // Validate and set theme path
@ -94,6 +96,30 @@ class Daux
} }
} }
public function getConfigurationOverride($override_file)
{
// When running through `daux --serve` we set an environment variable to know where we started from
$env = getenv('DAUX_CONFIGURATION');
if ($env && file_exists($env)) {
return $env;
}
if ($override_file == null) {
return null;
}
if (file_exists($override_file)) {
return getcwd() . '/' . $override_file;
}
$newPath = $this->local_base . DIRECTORY_SEPARATOR . $override_file;
if (file_exists($newPath)) {
return $newPath;
}
throw new Exception('The configuration override file does not exist. Check the path again : ' . $override_file);
}
public function normalizeThemePath($path) public function normalizeThemePath($path)
{ {
// When running through `daux --serve` we set an environment variable to know where we started from // When running through `daux --serve` we set an environment variable to know where we started from

View File

@ -24,6 +24,34 @@ class Generator implements \Todaymade\Daux\Format\Base\Generator
public function __construct(Daux $daux) public function __construct(Daux $daux)
{ {
$this->daux = $daux; $this->daux = $daux;
$this->checkConfiguration();
}
public function checkConfiguration()
{
$config = $this->daux->getParams();
$confluence = $config->getConfluenceConfiguration();
if ($confluence == null) {
throw new \RuntimeException("You must specify your Confluence configuration");
}
$mandatory = ['space_id', 'base_url', 'user', 'pass', 'prefix'];
$errors = [];
foreach ($mandatory as $key) {
if (!array_key_exists($key, $confluence)) {
$errors[] = $key;
}
}
if (count($errors)) {
throw new \RuntimeException("The following options are mandatory for confluence : '" . join("', '", $errors) . "'");
}
if (!array_key_exists('ancestor_id', $confluence) && !array_key_exists('root_id', $confluence)) {
throw new \RuntimeException("You must specify an 'ancestor_id' or a 'root_id' for confluence.");
}
} }
/** /**