Version 1
[yaffs-website] / vendor / drupal / console / src / Command / Generate / PluginImageFormatterCommand.php
1 <?php
2
3 /**
4  * @file
5  * Contains \Drupal\Console\Command\Generate\PluginFieldFormatterCommand.
6  */
7
8 namespace Drupal\Console\Command\Generate;
9
10 use Symfony\Component\Console\Input\InputInterface;
11 use Symfony\Component\Console\Input\InputOption;
12 use Symfony\Component\Console\Output\OutputInterface;
13 use Drupal\Console\Generator\PluginImageFormatterGenerator;
14 use Drupal\Console\Command\Shared\ModuleTrait;
15 use Drupal\Console\Command\Shared\ConfirmationTrait;
16 use Symfony\Component\Console\Command\Command;
17 use Drupal\Console\Core\Style\DrupalStyle;
18 use Drupal\Console\Extension\Manager;
19 use Drupal\Console\Core\Command\Shared\CommandTrait;
20 use Drupal\Console\Core\Utils\StringConverter;
21 use Drupal\Console\Utils\Validator;
22 use Drupal\Console\Core\Utils\ChainQueue;
23
24 class PluginImageFormatterCommand extends Command
25 {
26     use ModuleTrait;
27     use ConfirmationTrait;
28     use CommandTrait;
29
30     /**
31  * @var Manager
32 */
33     protected $extensionManager;
34
35     /**
36  * @var PluginImageFormatterGenerator
37 */
38     protected $generator;
39
40     /**
41      * @var StringConverter
42      */
43     protected $stringConverter;
44
45     /**
46  * @var Validator
47 */
48     protected $validator;
49
50     /**
51      * @var ChainQueue
52      */
53     protected $chainQueue;
54
55
56     /**
57      * PluginImageFormatterCommand constructor.
58      *
59      * @param Manager                       $extensionManager
60      * @param PluginImageFormatterGenerator $generator
61      * @param StringConverter               $stringConverter
62      * @param Validator                     $validator
63      * @param ChainQueue                    $chainQueue
64      */
65     public function __construct(
66         Manager $extensionManager,
67         PluginImageFormatterGenerator $generator,
68         StringConverter $stringConverter,
69         Validator $validator,
70         ChainQueue $chainQueue
71     ) {
72         $this->extensionManager = $extensionManager;
73         $this->generator = $generator;
74         $this->stringConverter = $stringConverter;
75         $this->validator = $validator;
76         $this->chainQueue = $chainQueue;
77         parent::__construct();
78     }
79
80     protected function configure()
81     {
82         $this
83             ->setName('generate:plugin:imageformatter')
84             ->setDescription($this->trans('commands.generate.plugin.imageformatter.description'))
85             ->setHelp($this->trans('commands.generate.plugin.imageformatter.help'))
86             ->addOption('module', '', InputOption::VALUE_REQUIRED, $this->trans('commands.common.options.module'))
87             ->addOption(
88                 'class',
89                 '',
90                 InputOption::VALUE_REQUIRED,
91                 $this->trans('commands.generate.plugin.imageformatter.options.class')
92             )
93             ->addOption(
94                 'label',
95                 '',
96                 InputOption::VALUE_OPTIONAL,
97                 $this->trans('commands.generate.plugin.imageformatter.options.label')
98             )
99             ->addOption(
100                 'plugin-id',
101                 '',
102                 InputOption::VALUE_OPTIONAL,
103                 $this->trans('commands.generate.plugin.imageformatter.options.plugin-id')
104             );
105     }
106
107     /**
108      * {@inheritdoc}
109      */
110     protected function execute(InputInterface $input, OutputInterface $output)
111     {
112         $io = new DrupalStyle($input, $output);
113
114         // @see use Drupal\Console\Command\Shared\ConfirmationTrait::confirmGeneration
115         if (!$this->confirmGeneration($io)) {
116             return;
117         }
118
119         $module = $input->getOption('module');
120         $class_name = $input->getOption('class');
121         $label = $input->getOption('label');
122         $plugin_id = $input->getOption('plugin-id');
123
124         $this->generator->generate($module, $class_name, $label, $plugin_id);
125         
126         $this->chainQueue->addCommand('cache:rebuild', ['cache' => 'discovery']);
127     }
128
129     protected function interact(InputInterface $input, OutputInterface $output)
130     {
131         $io = new DrupalStyle($input, $output);
132
133         // --module option
134         $module = $input->getOption('module');
135         if (!$module) {
136             // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
137             $module = $this->moduleQuestion($io);
138         }
139         $input->setOption('module', $module);
140
141         // --class option
142         $class_name = $input->getOption('class');
143         if (!$class_name) {
144             $class_name = $io->ask(
145                 $this->trans('commands.generate.plugin.imageformatter.questions.class'),
146                 'ExampleImageFormatter'
147             );
148             $input->setOption('class', $class_name);
149         }
150
151         // --label option
152         $label = $input->getOption('label');
153         if (!$label) {
154             $label = $io->ask(
155                 $this->trans('commands.generate.plugin.imageformatter.questions.label'),
156                 $this->stringConverter->camelCaseToHuman($class_name)
157             );
158             $input->setOption('label', $label);
159         }
160
161         // --plugin-id option
162         $plugin_id = $input->getOption('plugin-id');
163         if (!$plugin_id) {
164             $plugin_id = $io->ask(
165                 $this->trans('commands.generate.plugin.imageformatter.questions.plugin-id'),
166                 $this->stringConverter->camelCaseToUnderscore($class_name)
167             );
168             $input->setOption('plugin-id', $plugin_id);
169         }
170     }
171 }