5 * Contains \Drupal\Console\Command\Generate\AuthenticationProviderCommand.
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\Command\Shared\ServicesTrait;
14 use Drupal\Console\Command\Shared\ModuleTrait;
15 use Drupal\Console\Command\Shared\FormTrait;
16 use Symfony\Component\Console\Command\Command;
17 use Drupal\Console\Generator\AuthenticationProviderGenerator;
18 use Drupal\Console\Command\Shared\ConfirmationTrait;
19 use Drupal\Console\Core\Style\DrupalStyle;
20 use Drupal\Console\Core\Command\Shared\CommandTrait;
21 use Drupal\Console\Core\Utils\StringConverter;
22 use Drupal\Console\Extension\Manager;
24 class AuthenticationProviderCommand extends Command
29 use ConfirmationTrait;
35 protected $extensionManager;
38 * @var AuthenticationProviderGenerator
43 * @var StringConverter
45 protected $stringConverter;
49 * AuthenticationProviderCommand constructor.
51 * @param Manager $extensionManager
52 * @param AuthenticationProviderGenerator $generator
53 * @param StringConverter $stringConverter
55 public function __construct(
56 Manager $extensionManager,
57 AuthenticationProviderGenerator $generator,
58 StringConverter $stringConverter
60 $this->extensionManager = $extensionManager;
61 $this->generator = $generator;
62 $this->stringConverter = $stringConverter;
63 parent::__construct();
66 protected function configure()
69 ->setName('generate:authentication:provider')
70 ->setDescription($this->trans('commands.generate.authentication.provider.description'))
71 ->setHelp($this->trans('commands.generate.authentication.provider.help'))
72 ->addOption('module', null, InputOption::VALUE_REQUIRED, $this->trans('commands.common.options.module'))
76 InputOption::VALUE_OPTIONAL,
77 $this->trans('commands.generate.authentication.provider.options.class')
82 InputOption::VALUE_OPTIONAL,
83 $this->trans('commands.generate.authentication.provider.options.provider-id')
90 protected function execute(InputInterface $input, OutputInterface $output)
92 $io = new DrupalStyle($input, $output);
94 // @see use Drupal\Console\Command\Shared\ConfirmationTrait::confirmGeneration
95 if (!$this->confirmGeneration($io)) {
99 $module = $input->getOption('module');
100 $class = $input->getOption('class');
101 $provider_id = $input->getOption('provider-id');
103 $this->generator->generate($module, $class, $provider_id);
108 protected function interact(InputInterface $input, OutputInterface $output)
110 $io = new DrupalStyle($input, $output);
112 $stringUtils = $this->stringConverter;
115 $module = $input->getOption('module');
117 // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
118 $module = $this->moduleQuestion($io);
119 $input->setOption('module', $module);
123 $class = $input->getOption('class');
127 'commands.generate.authentication.provider.options.class'
129 'DefaultAuthenticationProvider',
130 function ($value) use ($stringUtils) {
131 if (!strlen(trim($value))) {
132 throw new \Exception('The Class name can not be empty');
135 return $stringUtils->humanToCamelCase($value);
138 $input->setOption('class', $class);
140 // --provider-id option
141 $provider_id = $input->getOption('provider-id');
143 $provider_id = $io->ask(
144 $this->trans('commands.generate.authentication.provider.options.provider-id'),
145 $stringUtils->camelCaseToUnderscore($class),
146 function ($value) use ($stringUtils) {
147 if (!strlen(trim($value))) {
148 throw new \Exception('The Class name can not be empty');
151 return $stringUtils->camelCaseToUnderscore($value);
154 $input->setOption('provider-id', $provider_id);