WidgetScript::__invoke()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 26
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 17
dl 0
loc 26
rs 9.7
c 0
b 0
f 0
cc 1
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(
34
            $app->get('resource_dir') . '/frontend/widget.js',
35
            $app->get('app_dir') . '/app/code/' . $namespace[0] . '/'
36
            . $namespace[1] . '/view/' . $scope . '/web/js/' . $input->getArgument('script-name') . '.js'
37
        );
38
39
        $app->resolve(ReplaceText::class)->handle(
40
            '{{widget-name}}',
41
            $input->getArgument('script-name'),
42
            $app->get('app_dir') . '/app/code/' . $namespace[0] . '/' . $namespace[1] . '/view/'
43
        );
44
45
        $output->writeln('<info>Widget Script ' . '/app/code/' . $namespace[0] . '/'
46
            . $namespace[1] . '/view/' . $scope . '/web/js/' . $input->getArgument('script-name') . '.js successfully generated</info>');
47
    }
48
49
    public function getScope(InputInterface $input)
50
    {
51
        return $input->getOption('admin') ? 'adminhtml' : 'frontend';
52
    }
53
}
54