Completed
Push — master ( 2361e9...c31a8f )
by Dmitrij
11s
created

WidgetScript::__invoke()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 23
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 23
rs 9.0856
c 0
b 0
f 0
cc 1
eloc 14
nc 1
nop 2
1
<?php
2
3
namespace HotRodCli\Processors\ScriptFile;
4
5
use HotRodCli\AppContainer;
6
use HotRodCli\Jobs\Module\ReplaceText;
7
use Symfony\Component\Console\Input\InputInterface;
8
use Symfony\Component\Console\Output\OutputInterface;
9
use HotRodCli\Jobs\Js\AddJs;
10
use HotRodCli\Jobs\Filesystem\CopyFile;
11
12
class WidgetScript
13
{
14
    protected $container;
15
16
    public function __construct(AppContainer $appContainer)
17
    {
18
        $this->container = $appContainer;
19
    }
20
21
    public function __invoke(InputInterface $input, OutputInterface $output)
22
    {
23
        $namespace = explode('_', $input->getArgument('namespace'));
24
        $app = $this->container;
25
        $scope = $this->getScope($input);
26
27
        $app->resolve(AddJs::class)->handle(
28
            $app->get('app_dir') . '/app/code/' . $namespace[0] . '/' . $namespace[1] . '/view/' . $scope . '/requirejs-config.js',
29
            $input->getArgument('script-name'),
30
            $input->getArgument('namespace') . '/js/' . $input->getArgument('script-name')
31
        );
32
33
        $app->resolve(CopyFile::class)->handle($app->get('resource_dir') . '/frontend/widget.js',
34
            $app->get('app_dir') . '/app/code/' . $namespace[0] . '/'
35
            . $namespace[1] . '/view/' . $scope . '/web/js/' . $input->getArgument('script-name') . '.js'
36
        );
37
38
        $app->resolve(ReplaceText::class)->handle('{{widget-name}}', $input->getArgument('script-name'),
39
            $app->get('app_dir') . '/app/code/' . $namespace[0] . '/' . $namespace[1] . '/view/'
40
        );
41
42
        $output->writeln('<info>Widget Script ' . '/app/code/' . $namespace[0] . '/'
43
            . $namespace[1] . '/view/' . $scope . '/web/js/' . $input->getArgument('script-name') . '.js successfully generated</info>');
44
    }
45
46
    public function getScope(InputInterface $input)
47
    {
48
        return $input->getOption('admin') ? 'adminhtml' : 'frontend';
49
    }
50
}
51