Passed
Push — master ( 4fa241...13320f )
by Chema
03:42 queued 11s
created

Gacela::bootstrap()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 14
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 2

Importance

Changes 4
Bugs 0 Features 0
Metric Value
cc 2
eloc 9
nc 2
nop 2
dl 0
loc 14
ccs 10
cts 10
cp 1
crap 2
rs 9.9666
c 4
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\Bootstrap\SetupGacelaInterface;
11
use Gacela\Framework\ClassResolver\AbstractClassResolver;
12
use Gacela\Framework\ClassResolver\ClassNameCache;
13
use Gacela\Framework\Config\Config;
14
15
final class Gacela
16
{
17
    /**
18
     * Define the entry point of Gacela.
19
     *
20
     * @param null|Closure(GacelaConfig):void $configFn
21
     */
22 51
    public static function bootstrap(string $appRootDir, Closure $configFn = null): void
23
    {
24 51
        $setup = self::processConfigFnIntoSetup($appRootDir, $configFn);
25
26 51
        if (!$setup->isCacheEnabled()) {
27 9
            ClassNameCache::resetCache();
28 9
            AbstractClassResolver::resetCache();
29 9
            Config::resetInstance();
30
        }
31
32 51
        Config::getInstance()
33 51
            ->setAppRootDir($appRootDir)
34 51
            ->setSetup($setup)
35 51
            ->init();
36
    }
37
38
    /**
39
     * @param null|Closure(GacelaConfig):void $configFn
40
     */
41 51
    private static function processConfigFnIntoSetup(string $appRootDir, Closure $configFn = null): SetupGacelaInterface
42
    {
43 51
        if ($configFn !== null) {
44 30
            return SetupGacela::fromCallable($configFn);
45
        }
46
47 21
        $gacelaFilePath = $appRootDir . '/gacela.php';
48
49 21
        if (is_file($gacelaFilePath)) {
50 10
            return SetupGacela::fromFile($gacelaFilePath);
51
        }
52
53 11
        return new SetupGacela();
54
    }
55
}
56