IrsteaPlantUmlExtension.php 1.84 KB
Newer Older
Guillaume Perréal's avatar
Guillaume Perréal committed
 * Copyright (C) 2016-2017 IRSTEA
 * All rights reserved.
 */

namespace Irstea\PlantUmlBundle\DependencyInjection;

use Irstea\PlantUmlBundle\DependencyInjection\Builder\ClassFilterBuilder;
use Irstea\PlantUmlBundle\DependencyInjection\Builder\GraphDefinitionBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\Extension;
use Symfony\Component\DependencyInjection\Loader;
Guillaume Perréal's avatar
Guillaume Perréal committed
 * Description of IrsteaPlantUmlExtension.
 */
class IrsteaPlantUmlExtension extends Extension
{
    public function load(array $configs, ContainerBuilder $container)
    {
Guillaume Perréal's avatar
Guillaume Perréal committed
        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
        $loader->load('services.yml');

        $configuration = new Configuration();
        $config = $this->processConfiguration($configuration, $configs);

        $container->setParameter('irstea_plant_uml.binaries.java', $config['binaries']['java']);
        $container->setParameter('irstea_plant_uml.binaries.plamtuml_jar', $config['binaries']['plamtuml_jar']);
        $container->setParameter('irstea_plant_uml.binaries.dot', $config['binaries']['dot']);
        $container->setParameter('irstea_plant_uml.output.directory', $config['output']['directory']);
        $container->setParameter('irstea_plant_uml.output.format', $config['output']['format']);
        $container->setParameter('irstea_plant_uml.graph_keys', array_keys($config['graphs']));
        $filterBuilder = new ClassFilterBuilder($container);
        foreach ($config['graphs'] as $key => $graph) {
            $id = "irstea_plant_uml.graph.$key";
            $builder = new GraphDefinitionBuilder($container, $id, $graph, $filterBuilder);
            $container->setDefinition($id, $builder->build());