protected function execute(array $arguments = array(), array $options = array())
 {
     $template = $arguments['template'];
     $destination = $arguments['destination'];
     if (!file_exists($template)) {
         throw new Exception(sprintf('Template file %s does not exist', $template));
     }
     $generator = new nbConfigurationGenerator();
     $generator->generate($template, $destination);
     return true;
 }
示例#2
0
 protected function execute(array $arguments = array(), array $options = array())
 {
     $allPluginsDir = nbConfig::get('nb_plugins_dir');
     $pluginName = $arguments['plugin-name'];
     $projectDir = $arguments['project-dir'];
     $configDir = $projectDir . '/.bee';
     $beeConfig = $configDir . '/bee.yml';
     $force = isset($options['force']);
     $pluginPath = $allPluginsDir . '/' . $pluginName;
     $verbose = isset($options['verbose']);
     if (!file_exists($pluginPath)) {
         throw new Exception('plugin ' . $pluginName . ' not found in ' . nbConfig::get('nb_plugins_dir'));
     }
     if (!file_exists($beeConfig)) {
         throw new Exception($beeConfig . ' not found');
     }
     $configParser = sfYaml::load($beeConfig);
     $plugins = $configParser['project']['bee']['enabled_plugins'];
     $plugins = isset($configParser['project']['bee']['enabled_plugins']) ? $configParser['project']['bee']['enabled_plugins'] : array();
     if (!is_array($plugins)) {
         $plugins = array();
     }
     if (!in_array($pluginName, $plugins)) {
         array_push($plugins, $pluginName);
         $configParser['project']['bee']['enabled_plugins'] = $plugins;
         $yml = sfYaml::dump($configParser, 99);
         file_put_contents($beeConfig, $yml);
         $this->logLine('Installing plugin ' . $pluginName);
     } else {
         $this->logLine('Plugin ' . $pluginName . ' already installed');
     }
     // Configuration will not generated
     if (isset($options['no-configuration'])) {
         return true;
     }
     // Configure plugin
     $pluginConfigDir = sprintf('%s/%s/config', $allPluginsDir, $pluginName);
     $files = nbFileFinder::create('file')->add('*.template.yml')->in($pluginConfigDir);
     $generator = new nbConfigurationGenerator();
     $this->getFileSystem()->mkdir($configDir, true);
     foreach ($files as $file) {
         $target = sprintf('%s/%s', $configDir, str_replace('.template.yml', '.yml', basename($file)));
         $generator->generate($file, $target, $force);
         if ($verbose) {
             $this->logLine('file+: ' . $target, nbLogger::INFO);
         }
     }
     return true;
 }
示例#3
0
 protected function execute(array $arguments = array(), array $options = array())
 {
     $pluginName = $arguments['plugin-name'];
     $force = isset($options['force']);
     $destination = isset($options['config-dir']) ? $options['config-dir'] : nbConfig::get('nb_config_dir');
     $pluginsDir = nbConfig::get('nb_plugins_dir');
     $pluginDir = sprintf('%s/%s', $pluginsDir, $pluginName);
     $this->logLine('Configuring plugin: ' . $pluginName, nbLogger::COMMENT);
     if (!is_dir($pluginDir)) {
         throw new LogicException('Plugin ' . $pluginName . ' not found in ' . $pluginsDir);
     }
     $source = sprintf('%s/%s/config', $pluginsDir, $pluginName);
     //TODO: copy all files in config (?)
     $files = nbFileFinder::create('file')->add('*.template.yml')->remove('.')->remove('..')->in($source);
     $generator = new nbConfigurationGenerator();
     $this->getFileSystem()->mkdir($destination, true);
     foreach ($files as $file) {
         $target = sprintf('%s/%s', $destination, str_replace('.template.yml', '.yml', basename($file)));
         $generator->generate($file, $target, $force);
         $this->logLine('file+: ' . $target, nbLogger::INFO);
     }
     $this->logLine(sprintf('Plugin %s successully configured in %s', $pluginName, $destination), nbLogger::COMMENT);
     return true;
 }
<?php

require_once dirname(__FILE__) . '/../../../../test/bootstrap/unit.php';
nbConfig::set('nb_command_dir', nbConfig::get('nb_sandbox_dir'));
$dataDir = nbConfig::get('nb_data_dir') . '/config';
$sandboxDir = nbConfig::get('nb_sandbox_dir');
$compareFile = $dataDir . '/config.compare.yml';
$destinationFile = $sandboxDir . '/config.yml';
$templateFile = $dataDir . '/template.config.yml';
$templateFileNotExists = $dataDir . '/template.notexists.sample.yml';
$t = new lime_test(5);
$t->comment('Generate Configuration');
$fs = nbFileSystem::getInstance();
$generator = new nbConfigurationGenerator();
$t->ok($generator->generate($templateFile, $destinationFile), 'Configuration generated successfully');
$content = removeCarriageReturn(file_get_contents($destinationFile));
$compare = removeCarriageReturn(file_get_contents($compareFile));
$t->is($content, $compare, 'Generated file content is correct');
try {
    $generator->generate($templateFile, $destinationFile, false);
    $t->fail('Cannot overwrite file');
} catch (Exception $e) {
    $t->pass('Cannot overwrite file');
}
$t->ok($generator->generate($templateFile, $destinationFile, true), 'Can overwrite file is "force" option set');
$fs->delete($destinationFile);
try {
    $generator->generate($templateFileNotExists, $destinationFile);
    $t->fail('No template file to check exists');
} catch (Exception $e) {
    $t->pass('No template file to check exists');