Completed
Push — master ( 83b029...ea7456 )
by ARCANEDEV
14s queued 12s
created

DeferredServicesProvider::getVendorPaths()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 12
ccs 8
cts 8
cp 1
rs 9.8666
c 0
b 0
f 0
cc 1
nc 1
nop 1
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Arcanedev\LaravelLang\Providers;
6
7
use Illuminate\Support\Collection;
8
use Arcanedev\LaravelLang\{TransChecker, TransManager, TransPublisher};
9
use Arcanedev\LaravelLang\Contracts\{
10
    TransChecker as TransCheckerContract,
11
    TransManager as TransManagerContract,
12
    TransPublisher as TransPublisherContract
13
};
14
use Arcanedev\Support\Providers\ServiceProvider;
15
use Illuminate\Contracts\Support\DeferrableProvider;
16
use Illuminate\Foundation\Application;
17
18
/**
19
 * Class     DeferredServiceProvider
20
 *
21
 * @package  Arcanedev\LaravelLang\Providers
22
 * @author   ARCANEDEV <[email protected]>
23
 */
24
class DeferredServicesProvider extends ServiceProvider implements DeferrableProvider
25
{
26
    /* -----------------------------------------------------------------
27
     |  Main Methods
28
     | -----------------------------------------------------------------
29
     */
30
31
    /**
32
     * Register any application services.
33
     */
34 174
    public function register(): void
35
    {
36 174
        $this->registerTransManager();
37 174
        $this->registerTransChecker();
38 174
        $this->registerLangPublisher();
39 174
    }
40
41
    /**
42
     * Get the services provided by the provider.
43
     *
44
     * @return array
45
     */
46 12
    public function provides(): array
47
    {
48
        return [
49 12
            TransManagerContract::class,
50
            TransCheckerContract::class,
51
            TransPublisherContract::class,
52
        ];
53
    }
54
55
    /* -----------------------------------------------------------------
56
     |  Services
57
     | -----------------------------------------------------------------
58
     */
59
60
    /**
61
     * Register the trans manager.
62
     */
63 174
    private function registerTransManager(): void
64
    {
65
        $this->singleton(TransManagerContract::class, function (Application $app) {
66 132
            return new TransManager($app['files'], $this->getVendorPaths($app));
67 174
        });
68 174
    }
69
70
    /**
71
     * Register the trans checker.
72
     */
73 174
    private function registerTransChecker(): void
74
    {
75
        $this->singleton(TransCheckerContract::class, function (Application $app) {
76 48
            return new TransChecker(
77 48
                $app['translator'],
78 48
                $app[TransManagerContract::class],
79 48
                $app['config']->get('laravel-lang', [])
80
            );
81 174
        });
82 174
    }
83
84
    /**
85
     * Register the lang publisher.
86
     */
87 174
    private function registerLangPublisher(): void
88
    {
89
        $this->singleton(TransPublisherContract::class, function (Application $app) {
90 84
            return new TransPublisher(
91 84
                $app['files'],
92 84
                $app[TransManagerContract::class],
93 84
                $app->langPath()
94
            );
95 174
        });
96 174
    }
97
98
    /**
99
     * Get the vendor paths.
100
     *
101
     * @param  \Illuminate\Foundation\Application  $app
102
     *
103
     * @return array
104
     */
105 132
    private function getVendorPaths(Application $app): array
106
    {
107 132
        return Collection::make($app['config']->get('laravel-lang.vendor', []))
108
            ->mapWithKeys(function (string $path, string $group) {
109 132
                return ["vendor-{$group}" => $path];
110 132
            })
111 132
            ->put('app', $app->langPath())
112
            ->transform(function (string $path) {
113 132
                return realpath($path);
114 132
            })
115 132
            ->toArray();
116
    }
117
}
118