Completed
Pull Request — master (#17)
by ARCANEDEV
04:24
created

LaravelLangServiceProvider::getBasePath()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php namespace Arcanedev\LaravelLang;
2
3
use Arcanedev\Support\PackageServiceProvider as ServiceProvider;
4
use Illuminate\Foundation\Application;
5
6
/**
7
 * Class     LaravelLangServiceProvider
8
 *
9
 * @package  Arcanedev\LaravelLang
10
 * @author   ARCANEDEV <[email protected]>
11
 */
12
class LaravelLangServiceProvider extends ServiceProvider
13
{
14
    /* -----------------------------------------------------------------
15
     |  Properties
16
     | -----------------------------------------------------------------
17
     */
18
19
    /**
20
     * Package name.
21
     *
22
     * @var string
23
     */
24
    protected $package = 'laravel-lang';
25
26
    /* -----------------------------------------------------------------
27
     |  Main Methods
28
     | -----------------------------------------------------------------
29
     */
30
31
    /**
32
     * Register the service provider.
33
     */
34 78
    public function register()
35
    {
36 78
        parent::register();
37
38 78
        $this->registerConfig();
39 78
        $this->registerTransManager();
40 78
        $this->registerTransChecker();
41 78
        $this->registerLangPublisher();
42
43 78
        $this->app->register(Providers\TranslationServiceProvider::class);
44 78
        $this->registerConsoleServiceProvider(Providers\CommandServiceProvider::class);
45 78
    }
46
47
    /**
48
     * Boot the service provider.
49
     */
50 78
    public function boot()
51
    {
52 78
        parent::boot();
53
54 78
        $this->publishConfig();
55 78
    }
56
57
    /**
58
     * Get the services provided by the provider.
59
     *
60
     * @return array
61
     */
62 3
    public function provides()
63
    {
64
        return [
65 3
            Contracts\TransManager::class,
66 1
            Contracts\TransChecker::class,
67 1
            Contracts\TransPublisher::class,
68 1
        ];
69
    }
70
71
    /* -----------------------------------------------------------------
72
     |  Services
73
     | -----------------------------------------------------------------
74
     */
75
76
    /**
77
     * Register the trans manager.
78
     */
79 78
    private function registerTransManager()
80
    {
81
        $this->singleton(Contracts\TransManager::class, function (Application $app) {
82
            /**
83
             * @var  \Illuminate\Filesystem\Filesystem        $files
84
             * @var  \Illuminate\Contracts\Config\Repository  $config
85
             */
86 57
            $files  = $app['files'];
87 57
            $config = $app['config'];
88 57
            $paths  = array_map('realpath', [
89 57
                'app'    => $app->langPath(),
90 57
                'vendor' => $config->get('laravel-lang.vendor', ''),
91 19
            ]);
92
93 57
            return new TransManager($files, $paths);
94 78
        });
95 78
    }
96
97
    /**
98
     * Register the trans checker.
99
     */
100 78
    private function registerTransChecker()
101
    {
102
        $this->singleton(Contracts\TransChecker::class, function (Application $app) {
103
            /**
104
             * @var  \Illuminate\Translation\Translator             $translator
105
             * @var  \Arcanedev\LaravelLang\Contracts\TransManager  $manager
106
             * @var  \Illuminate\Contracts\Config\Repository        $config
107
             */
108 21
            $translator = $app['translator'];
109 21
            $manager    = $app[Contracts\TransManager::class];
110 21
            $config     = $app['config'];
111
112 21
            return new TransChecker($translator, $manager, $config->get('laravel-lang', []));
113 78
        });
114 78
    }
115
116
    /**
117
     * Register the lang publisher.
118
     */
119
    private function registerLangPublisher()
120
    {
121 78
        $this->singleton(Contracts\TransPublisher::class, function (Application $app) {
122
            /**
123
             * @var  \Illuminate\Filesystem\Filesystem              $files
124
             * @var  \Arcanedev\LaravelLang\Contracts\TransManager  $manager
125
             */
126 33
            $files   = $app['files'];
127 33
            $manager = $app[Contracts\TransManager::class];
128
129 33
            return new TransPublisher($files, $manager, $app->langPath());
130 78
        });
131 78
    }
132
}
133