5 * Contains \Drupal\Console\Command\Generate\PluginFieldFormatterCommand.
8 namespace Drupal\Console\Command\Generate;
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;
24 class PluginImageFormatterCommand extends Command
27 use ConfirmationTrait;
33 protected $extensionManager;
36 * @var PluginImageFormatterGenerator
41 * @var StringConverter
43 protected $stringConverter;
53 protected $chainQueue;
57 * PluginImageFormatterCommand constructor.
59 * @param Manager $extensionManager
60 * @param PluginImageFormatterGenerator $generator
61 * @param StringConverter $stringConverter
62 * @param Validator $validator
63 * @param ChainQueue $chainQueue
65 public function __construct(
66 Manager $extensionManager,
67 PluginImageFormatterGenerator $generator,
68 StringConverter $stringConverter,
70 ChainQueue $chainQueue
72 $this->extensionManager = $extensionManager;
73 $this->generator = $generator;
74 $this->stringConverter = $stringConverter;
75 $this->validator = $validator;
76 $this->chainQueue = $chainQueue;
77 parent::__construct();
80 protected function configure()
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'))
90 InputOption::VALUE_REQUIRED,
91 $this->trans('commands.generate.plugin.imageformatter.options.class')
96 InputOption::VALUE_OPTIONAL,
97 $this->trans('commands.generate.plugin.imageformatter.options.label')
102 InputOption::VALUE_OPTIONAL,
103 $this->trans('commands.generate.plugin.imageformatter.options.plugin-id')
110 protected function execute(InputInterface $input, OutputInterface $output)
112 $io = new DrupalStyle($input, $output);
114 // @see use Drupal\Console\Command\Shared\ConfirmationTrait::confirmGeneration
115 if (!$this->confirmGeneration($io)) {
119 $module = $input->getOption('module');
120 $class_name = $input->getOption('class');
121 $label = $input->getOption('label');
122 $plugin_id = $input->getOption('plugin-id');
124 $this->generator->generate($module, $class_name, $label, $plugin_id);
126 $this->chainQueue->addCommand('cache:rebuild', ['cache' => 'discovery']);
129 protected function interact(InputInterface $input, OutputInterface $output)
131 $io = new DrupalStyle($input, $output);
134 $module = $input->getOption('module');
136 // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
137 $module = $this->moduleQuestion($io);
139 $input->setOption('module', $module);
142 $class_name = $input->getOption('class');
144 $class_name = $io->ask(
145 $this->trans('commands.generate.plugin.imageformatter.questions.class'),
146 'ExampleImageFormatter'
148 $input->setOption('class', $class_name);
152 $label = $input->getOption('label');
155 $this->trans('commands.generate.plugin.imageformatter.questions.label'),
156 $this->stringConverter->camelCaseToHuman($class_name)
158 $input->setOption('label', $label);
161 // --plugin-id option
162 $plugin_id = $input->getOption('plugin-id');
164 $plugin_id = $io->ask(
165 $this->trans('commands.generate.plugin.imageformatter.questions.plugin-id'),
166 $this->stringConverter->camelCaseToUnderscore($class_name)
168 $input->setOption('plugin-id', $plugin_id);