5 * Contains \Drupal\Console\Command\Generate\PluginMigrateProcessCommand.
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 Symfony\Component\Console\Command\Command;
14 use Drupal\Console\Generator\PluginMigrateProcessGenerator;
15 use Drupal\Console\Command\Shared\ModuleTrait;
16 use Drupal\Console\Command\Shared\ConfirmationTrait;
17 use Drupal\Console\Core\Command\Shared\ContainerAwareCommandTrait;
18 use Drupal\Console\Extension\Manager;
19 use Drupal\Console\Core\Utils\StringConverter;
20 use Drupal\Console\Core\Style\DrupalStyle;
21 use Drupal\Console\Core\Utils\ChainQueue;
23 class PluginMigrateProcessCommand extends Command
26 use ConfirmationTrait;
27 use ContainerAwareCommandTrait;
30 * @var PluginMigrateProcessGenerator
37 protected $chainQueue;
42 protected $extensionManager;
45 * @var StringConverter
47 protected $stringConverter;
50 * PluginBlockCommand constructor.
52 * @param PluginMigrateProcessGenerator $generator
53 * @param ChainQueue $chainQueue
54 * @param Manager $extensionManager
55 * @param StringConverter $stringConverter
57 public function __construct(
58 PluginMigrateProcessGenerator $generator,
59 ChainQueue $chainQueue,
60 Manager $extensionManager,
61 StringConverter $stringConverter
63 $this->generator = $generator;
64 $this->chainQueue = $chainQueue;
65 $this->extensionManager = $extensionManager;
66 $this->stringConverter = $stringConverter;
67 parent::__construct();
70 protected function configure()
73 ->setName('generate:plugin:migrate:process')
74 ->setDescription($this->trans('commands.generate.plugin.migrate.process.description'))
75 ->setHelp($this->trans('commands.generate.plugin.migrate.process.help'))
76 ->addOption('module', '', InputOption::VALUE_REQUIRED, $this->trans('commands.common.options.module'))
80 InputOption::VALUE_OPTIONAL,
81 $this->trans('commands.generate.plugin.migrate.process.options.class')
86 InputOption::VALUE_OPTIONAL,
87 $this->trans('commands.generate.plugin.migrate.process.options.plugin-id')
94 protected function execute(InputInterface $input, OutputInterface $output)
96 $io = new DrupalStyle($input, $output);
98 // @see use Drupal\Console\Command\Shared\ConfirmationTrait::confirmGeneration
99 if (!$this->confirmGeneration($io)) {
103 $module = $input->getOption('module');
104 $class_name = $input->getOption('class');
105 $plugin_id = $input->getOption('plugin-id');
107 $this->generator->generate($module, $class_name, $plugin_id);
109 $this->chainQueue->addCommand('cache:rebuild', ['cache' => 'discovery']);
115 protected function interact(InputInterface $input, OutputInterface $output)
117 $io = new DrupalStyle($input, $output);
119 // 'module-name' option.
120 $module = $input->getOption('module');
122 // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
123 $module = $this->moduleQuestion($io);
124 $input->setOption('module', $module);
127 // 'class-name' option
128 $class = $input->getOption('class');
131 $this->trans('commands.generate.plugin.migrate.process.questions.class'),
132 ucfirst($this->stringConverter->underscoreToCamelCase($module))
134 $input->setOption('class', $class);
137 // 'plugin-id' option.
138 $pluginId = $input->getOption('plugin-id');
140 $pluginId = $io->ask(
141 $this->trans('commands.generate.plugin.migrate.source.questions.plugin-id'),
142 $this->stringConverter->camelCaseToUnderscore($class)
144 $input->setOption('plugin-id', $pluginId);