5 * Contains \Drupal\Console\Command\Generate\PluginRulesActionCommand.
8 namespace Drupal\Console\Command\Generate;
10 use Drupal\Console\Generator\PluginRulesActionGenerator;
11 use Symfony\Component\Console\Input\InputInterface;
12 use Symfony\Component\Console\Input\InputOption;
13 use Symfony\Component\Console\Output\OutputInterface;
14 use Drupal\Console\Command\Shared\ServicesTrait;
15 use Drupal\Console\Command\Shared\ModuleTrait;
16 use Drupal\Console\Command\Shared\FormTrait;
17 use Drupal\Console\Command\Shared\ConfirmationTrait;
18 use Symfony\Component\Console\Command\Command;
19 use Drupal\Console\Core\Style\DrupalStyle;
20 use Drupal\Console\Extension\Manager;
21 use Drupal\Console\Core\Command\Shared\CommandTrait;
22 use Drupal\Console\Core\Utils\StringConverter;
23 use Drupal\Console\Core\Utils\ChainQueue;
26 * Class PluginRulesActionCommand
28 * @package Drupal\Console\Command\Generate
30 class PluginRulesActionCommand extends Command
35 use ConfirmationTrait;
41 protected $extensionManager;
44 * @var PluginRulesActionGenerator
49 * @var StringConverter
51 protected $stringConverter;
56 protected $chainQueue;
60 * PluginRulesActionCommand constructor.
62 * @param Manager $extensionManager
63 * @param PluginRulesActionGenerator $generator
64 * @param StringConverter $stringConverter
65 * @param ChainQueue $chainQueue
67 public function __construct(
68 Manager $extensionManager,
69 PluginRulesActionGenerator $generator,
70 StringConverter $stringConverter,
71 ChainQueue $chainQueue
73 $this->extensionManager = $extensionManager;
74 $this->generator = $generator;
75 $this->stringConverter = $stringConverter;
76 $this->chainQueue = $chainQueue;
77 parent::__construct();
80 protected function configure()
83 ->setName('generate:plugin:rulesaction')
84 ->setDescription($this->trans('commands.generate.plugin.rulesaction.description'))
85 ->setHelp($this->trans('commands.generate.plugin.rulesaction.help'))
86 ->addOption('module', null, InputOption::VALUE_REQUIRED, $this->trans('commands.common.options.module'))
90 InputOption::VALUE_OPTIONAL,
91 $this->trans('commands.generate.plugin.rulesaction.options.class')
96 InputOption::VALUE_OPTIONAL,
97 $this->trans('commands.generate.plugin.rulesaction.options.label')
102 InputOption::VALUE_OPTIONAL,
103 $this->trans('commands.generate.plugin.rulesaction.options.plugin-id')
105 ->addOption('type', null, InputOption::VALUE_REQUIRED, $this->trans('commands.generate.plugin.rulesaction.options.type'))
109 InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY,
110 $this->trans('commands.generate.plugin.rulesaction.options.category')
115 InputOption::VALUE_OPTIONAL,
116 $this->trans('commands.generate.plugin.rulesaction.options.context')
123 protected function execute(InputInterface $input, OutputInterface $output)
125 $io = new DrupalStyle($input, $output);
127 // @see use Drupal\Console\Command\Shared\ConfirmationTrait::confirmGeneration
128 if (!$this->confirmGeneration($io)) {
132 $module = $input->getOption('module');
133 $class_name = $input->getOption('class');
134 $label = $input->getOption('label');
135 $plugin_id = $input->getOption('plugin-id');
136 $type = $input->getOption('type');
137 $category = $input->getOption('category');
138 $context = $input->getOption('context');
140 $this->generator->generate($module, $class_name, $label, $plugin_id, $category, $context, $type);
142 $this->chainQueue->addCommand('cache:rebuild', ['cache' => 'discovery']);
147 protected function interact(InputInterface $input, OutputInterface $output)
149 $io = new DrupalStyle($input, $output);
152 $module = $input->getOption('module');
154 // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
155 $module = $this->moduleQuestion($io);
156 $input->setOption('module', $module);
160 $class_name = $input->getOption('class');
162 $class_name = $io->ask(
163 $this->trans('commands.generate.plugin.rulesaction.options.class'),
166 $input->setOption('class', $class_name);
170 $label = $input->getOption('label');
173 $this->trans('commands.generate.plugin.rulesaction.options.label'),
174 $this->stringConverter->camelCaseToHuman($class_name)
176 $input->setOption('label', $label);
179 // --plugin-id option
180 $plugin_id = $input->getOption('plugin-id');
182 $plugin_id = $io->ask(
183 $this->trans('commands.generate.plugin.rulesaction.options.plugin-id'),
184 $this->stringConverter->camelCaseToUnderscore($class_name)
186 $input->setOption('plugin-id', $plugin_id);
190 $type = $input->getOption('type');
193 $this->trans('commands.generate.plugin.rulesaction.options.type'),
196 $input->setOption('type', $type);
200 $category = $input->getOption('category');
202 $category = $io->ask(
203 $this->trans('commands.generate.plugin.rulesaction.options.category'),
204 $this->stringConverter->camelCaseToUnderscore($class_name)
206 $input->setOption('category', $category);
210 $context = $input->getOption('context');
213 $this->trans('commands.generate.plugin.rulesaction.options.context'),
214 $this->stringConverter->camelCaseToUnderscore($class_name)
216 $input->setOption('context', $context);