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

Configuration::getConfigTreeBuilder()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 31
Code Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 26
c 1
b 0
f 0
dl 0
loc 31
rs 9.504
cc 1
nc 1
nop 0
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