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

WidgetScript   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 4
dl 0
loc 37
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A getScope() 0 3 2
A __invoke() 0 23 1
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