Passed
Push — di ( 61d74f...f00c6d )
by Arnaud
15:03 queued 11:43
created

Configuration   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 1
eloc 27
c 1
b 0
f 0
dl 0
loc 36
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A getConfigTreeBuilder() 0 31 1
1
<?php
2
3
/**
4
 * This file is part of Cecil.
5
 *
6
 * (c) Arnaud Ligny <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
declare(strict_types=1);
13
14
namespace Cecil\DependencyInjection;
15
16
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
17
use Symfony\Component\Config\Definition\ConfigurationInterface;
18
19
/**
20
 * Configuration definition for Cecil.
21
 *
22
 * This class defines the configuration tree for Cecil's dependency injection container.
23
 * It provides validation and default values for configuration options.
24
 */
25
class Configuration implements ConfigurationInterface
26
{
27
    /**
28
     * {@inheritdoc}
29
     */
30
    public function getConfigTreeBuilder(): TreeBuilder
31
    {
32
        $treeBuilder = new TreeBuilder('cecil');
33
        $rootNode = $treeBuilder->getRootNode();
34
35
        $rootNode
36
            ->children()
37
                ->integerNode('verbosity')
38
                    ->defaultValue(0)
39
                    ->info('Default verbosity level for loggers')
40
                ->end()
41
                ->booleanNode('debug')
42
                    ->defaultFalse()
43
                    ->info('Enable debug mode')
44
                ->end()
45
                ->scalarNode('source_dir')
46
                    ->defaultValue('%env(PWD)%')
47
                    ->info('Source directory for the site')
48
                ->end()
49
                ->scalarNode('destination_dir')
50
                    ->defaultValue('_site')
51
                    ->info('Destination directory for built files')
52
                ->end()
53
                ->scalarNode('cache_dir')
54
                    ->defaultValue('.cecil/cache')
55
                    ->info('Cache directory')
56
                ->end()
57
            ->end()
58
        ;
59
60
        return $treeBuilder;
61
    }
62
}
63