Robo Config enables a flexible configuration processing for Robo by providing the following features:
- Define your default configuration in
robo.yml.distand let developers override that locally in theirrobo.yml. - Allow configuration files to use properties defined within the same configuration in a Phing-like fashion.
- Allow all properties to be overridden on the command line so that they can be tweaked when running continuous integration builds.
- Access any configuration parameter via
$this->config('my.configuration.property);`
Install with Composer by running:
$ composer require nuvoleweb/robo-config
After installation add the following trait to your RoboFile.php:
<?php
class RoboFile extends Robo\Tasks {
use NuvoleWeb\Robo\Task\Config\loadTasks;
}For example, consider having the following robo.yml.dist file:
site:
name: "Default site name"
email: "me@example.com"
url: "http://localhost"
account:
name: "admin"
password: !account.name
email: !site.emailAnd the following robo.yml file:
site:
name: "My site name"When running:
./vendor/bin/robo my-command -o "site.url: http://127.0.0.1:8888"
The resulting configuration will be:
site:
name: "My site name"
email: "me@example.com"
url: "http://127.0.0.1:8888"
account:
name: "admin"
password: "admin"
email: "me@example.com"Robo Config exposes three tasks that allow to convert a YAML configuration subset into PHP array. Such array will be then appended, prepended or written down to a PHP destination file as an array.
This might be useful for applications that have part of their configuration expressed in a PHP file, like Drupal or Silex.
For example, the following YAML portion:
settings:
config:
system.logging:
error_level: verbose
settings:
scan_tests: TRUEWill be converted into:
// Start settings processor block.
$config["system.logging"] = array('error_level' => 'verbose');
$settings["scan_tests"] = true;
// End settings processor block.And added to a PHP file.
Given an existing /my/config.php file, by calling:
<?php
class RoboFile {
public function appendTask() {
$this->taskAppendConfiguration('/my/config.php')->run();
}
} We will get the following result:
<?php
// Content of /my/config.php here...
// Start settings processor block.
$config["system.logging"] = array('error_level' => 'verbose');
$settings["scan_tests"] = true;
// End settings processor block.Given an existing /my/config.php file, by calling:
<?php
class RoboFile {
public function appendTask() {
$this->taskPrependConfiguration('/my/config.php')->run();
}
} We will get the following result:
<?php
// Start settings processor block.
$config["system.logging"] = array('error_level' => 'verbose');
$settings["scan_tests"] = true;
// End settings processor block.
// Content of /my/config.php here...Given a non-existing /my/config.php file, by calling:
<?php
class RoboFile {
public function appendTask() {
$this->taskWriteConfiguration('/my/config.php')->run();
}
} We will get the following result:
<?php
// Start settings processor block.
$config["system.logging"] = array('error_level' => 'verbose');
$settings["scan_tests"] = true;
// End settings processor block.The behaviors of all tasks above can be customized as follow:
<?php
class RoboFile {
public function myTask() {
$config = $this->getMyConfiguration();
$this->taskAppendConfiguration('/my/config.php', $config) // Use custom configuration.
->setBlockStart('// Start') // Change opening comment.
->setBlockEnd('// End') // Change closing comment.
->setConfigKey('parameters') // Use `parameters:` instead of default `settings:`
->run();
}
} If you just want to use the PHP configuration file processing tasks above in your custom Robo application you can load them by including the following trait:
<?php
class RoboFile {
use \NuvoleWeb\Robo\Task\Config\Php\loadTasks;
}