edca262116a5e4eea8766b4e0fea07702f0c12ba
[yaffs-website] / vendor / drupal / console / src / Command / Generate / JsTestCommand.php
1 <?php
2
3 /**
4  * @file
5  * Contains \Drupal\Console\Command\Generate\JsTestCommand.
6  */
7
8 namespace Drupal\Console\Command\Generate;
9
10 use Drupal\Console\Command\Shared\ConfirmationTrait;
11 use Drupal\Console\Command\Shared\ModuleTrait;
12 use Drupal\Console\Core\Command\Command;
13 use Drupal\Console\Core\Command\Shared\ContainerAwareCommandTrait;
14 use Drupal\Console\Extension\Manager;
15 use Drupal\Console\Generator\JsTestGenerator;
16 use Drupal\Console\Utils\Validator;
17 use Symfony\Component\Console\Input\InputInterface;
18 use Symfony\Component\Console\Input\InputOption;
19 use Symfony\Component\Console\Output\OutputInterface;
20
21 class JsTestCommand extends Command
22 {
23     use ModuleTrait;
24     use ConfirmationTrait;
25     use ContainerAwareCommandTrait;
26
27     /**
28      * @var Manager
29      */
30     protected $extensionManager;
31
32     /**
33      * @var JsTestGenerator
34      */
35     protected $generator;
36
37     /**
38      * @var Validator
39      */
40     protected $validator;
41
42     /**
43      * JsTestCommand constructor.
44      *
45      * @param Manager         $extensionManager
46      * @param JsTestGenerator $generator
47      * @param Validator       $validator
48      */
49     public function __construct(
50         Manager $extensionManager,
51         JsTestGenerator $generator,
52         Validator $validator
53     ) {
54         $this->extensionManager = $extensionManager;
55         $this->generator = $generator;
56         $this->validator = $validator;
57         parent::__construct();
58     }
59
60     /**
61      * {@inheritdoc}
62      */
63     protected function configure()
64     {
65         $this
66             ->setName('generate:jstest')
67             ->setDescription($this->trans('commands.generate.jstest.description'))
68             ->setHelp($this->trans('commands.generate.jstest.help'))
69             ->addOption(
70                 'module',
71                 null,
72                 InputOption::VALUE_REQUIRED,
73                 $this->trans('commands.common.options.module')
74             )
75             ->addOption(
76                 'class',
77                 null,
78                 InputOption::VALUE_OPTIONAL,
79                 $this->trans('commands.generate.jstest.options.class')
80             )
81             ->setAliases(['gjt']);
82     }
83
84     /**
85      * {@inheritdoc}
86      */
87     protected function execute(InputInterface $input, OutputInterface $output)
88     {
89         // @see use Drupal\Console\Command\Shared\ConfirmationTrait::confirmOperation
90         if (!$this->confirmOperation()) {
91             return 1;
92         }
93
94         $module = $input->getOption('module');
95         $class = $this->validator->validateClassName($input->getOption('class'));
96
97         $this->generator->generate([
98             'module' => $module,
99             'class' => $class,
100         ]);
101
102         return 0;
103     }
104
105     /**
106      * {@inheritdoc}
107      */
108     protected function interact(InputInterface $input, OutputInterface $output)
109     {
110         // --module option
111         $this->getModuleOption();
112
113         // --class option
114         $class = $input->getOption('class');
115         if (!$class) {
116             $class = $this->getIo()->ask(
117                 $this->trans('commands.generate.jstest.questions.class'),
118                 'DefaultJsTest',
119                 function ($class) {
120                     return $this->validator->validateClassName($class);
121                 }
122             );
123             $input->setOption('class', $class);
124         }
125     }
126 }