Passed
Push — feature/rename-classresolverca... ( 4454d3 )
by Jesús
04:01
created

Gacela::bootstrap()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 16
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 3

Importance

Changes 3
Bugs 0 Features 0
Metric Value
cc 3
eloc 11
nc 4
nop 2
dl 0
loc 16
ccs 12
cts 12
cp 1
crap 3
rs 9.9
c 3
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Gacela\Framework;
6
7
use Closure;
8
use Gacela\Framework\Bootstrap\GacelaConfig;
9
use Gacela\Framework\Bootstrap\SetupGacela;
10
use Gacela\Framework\ClassResolver\AbstractClassResolver;
11
use Gacela\Framework\ClassResolver\ClassNameFinder\ClassNameFinder;
12
use Gacela\Framework\Config\Config;
13
14
final class Gacela
15
{
16
    /**
17
     * Define the entry point of Gacela.
18
     *
19
     * @param null|Closure(GacelaConfig):void $configFn
20
     */
21 34
    public static function bootstrap(string $appRootDir, Closure $configFn = null): void
22
    {
23 34
        $setup = $configFn !== null
24 18
            ? SetupGacela::fromCallable($configFn)
25 34
            : new SetupGacela();
26
27 34
        if ($setup->isResetCache()) {
28 8
            ClassNameFinder::resetCachedClassNames();
29 8
            AbstractClassResolver::resetCache();
30 8
            Config::resetInstance();
31
        }
32
33 34
        Config::getInstance()
34 34
            ->setAppRootDir($appRootDir)
35 34
            ->setSetup($setup)
36 34
            ->init();
37
    }
38
}
39