for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Openl10n\Cli\ServiceContainer\Extension;
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
class ServerExtension implements ConfiguredExtension
{
/**
* {@inheritdoc}
*/
public function initialize(ContainerBuilder $container)
}
public function load(array $config, ContainerBuilder $container)
$container
->register('api.config', 'Openl10n\Sdk\Config')
->addArgument($config['hostname'])
->addArgument($config['use_ssl'])
->addArgument($config['port'])
->addMethodCall('setAuth', array($config['username'], $config['password']))
;
->register('api', 'Openl10n\Sdk\Api')
->addArgument(new Reference('api.config'))
public function configure(ArrayNodeDefinition $node)
$node
->beforeNormalization()
->ifString()
->then(function ($v) {
$home = getenv('HOME');
$filepath = $home.'/.openl10n/server.conf';
$data = array();
if (file_exists($filepath)) {
$data = parse_ini_file($filepath, true);
if (isset($data[$v])) {
return $data[$v];
return array(
'hostname' => $v
);
})
->end()
->children()
->scalarNode('hostname')
->isRequired()
->cannotBeEmpty()
->scalarNode('username')
->scalarNode('password')
->booleanNode('use_ssl')
// Because data parsed from an INI file is not
// interpreted as boolean, then cast automatically.
return (boolean) $v;
->defaultFalse()
->integerNode('port')
->defaultNull()
->end();
public function getName()
return 'server';