5 * Contains \Drupal\Console\Command\Generate\PluginTypeYamlCommand.
8 namespace Drupal\Console\Command\Generate;
10 use Drupal\Console\Generator\PluginTypeYamlGenerator;
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 PluginTypeYamlCommand
28 * @package Drupal\Console\Command\Generate
30 class PluginTypeYamlCommand extends Command
35 use ConfirmationTrait;
41 protected $extensionManager;
44 * @var PluginTypeYamlGenerator
49 * @var StringConverter
51 protected $stringConverter;
54 * PluginTypeYamlCommand constructor.
56 * @param Manager $extensionManager
57 * @param PluginTypeYamlGenerator $generator
58 * @param StringConverter $stringConverter
60 public function __construct(
61 Manager $extensionManager,
62 PluginTypeYamlGenerator $generator,
63 StringConverter $stringConverter
65 $this->extensionManager = $extensionManager;
66 $this->generator = $generator;
67 $this->stringConverter = $stringConverter;
68 parent::__construct();
71 protected function configure()
74 ->setName('generate:plugin:type:yaml')
75 ->setDescription($this->trans('commands.generate.plugin.type.yaml.description'))
76 ->setHelp($this->trans('commands.generate.plugin.type.yaml.help'))
77 ->addOption('module', null, InputOption::VALUE_REQUIRED, $this->trans('commands.common.options.module'))
81 InputOption::VALUE_OPTIONAL,
82 $this->trans('commands.generate.plugin.type.yaml.options.class')
87 InputOption::VALUE_OPTIONAL,
88 $this->trans('commands.generate.plugin.type.yaml.options.plugin-name')
93 InputOption::VALUE_OPTIONAL,
94 $this->trans('commands.generate.plugin.type.yaml.options.plugin-file-name')
101 protected function execute(InputInterface $input, OutputInterface $output)
103 $module = $input->getOption('module');
104 $class_name = $input->getOption('class');
105 $plugin_name = $input->getOption('plugin-name');
106 $plugin_file_name = $input->getOption('plugin-file-name');
108 $this->generator->generate($module, $class_name, $plugin_name, $plugin_file_name);
111 protected function interact(InputInterface $input, OutputInterface $output)
113 $io = new DrupalStyle($input, $output);
116 $module = $input->getOption('module');
118 // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
119 $module = $this->moduleQuestion($io);
120 $input->setOption('module', $module);
124 $class_name = $input->getOption('class');
126 $class_name = $io->ask(
127 $this->trans('commands.generate.plugin.type.yaml.options.class'),
130 $input->setOption('class', $class_name);
133 // --plugin-name option
134 $plugin_name = $input->getOption('plugin-name');
136 $plugin_name = $io->ask(
137 $this->trans('commands.generate.plugin.type.yaml.options.plugin-name'),
138 $this->stringConverter->camelCaseToUnderscore($class_name)
140 $input->setOption('plugin-name', $plugin_name);
143 // --plugin-file-name option
144 $plugin_file_name = $input->getOption('plugin-file-name');
145 if (!$plugin_file_name) {
146 $plugin_file_name = $io->ask(
147 $this->trans('commands.generate.plugin.type.yaml.options.plugin-file-name'),
148 strtr($plugin_name, '_-', '..')
150 $input->setOption('plugin-file-name', $plugin_file_name);