5 * Contains \Drupal\Console\Command\Generate\AuthenticationProviderCommand.
8 namespace Drupal\Console\Command\Generate;
10 use Drupal\Console\Utils\Validator;
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\Core\Command\Command;
17 use Drupal\Console\Generator\AuthenticationProviderGenerator;
18 use Drupal\Console\Command\Shared\ConfirmationTrait;
19 use Drupal\Console\Core\Utils\StringConverter;
20 use Drupal\Console\Extension\Manager;
22 class AuthenticationProviderCommand extends Command
26 use ConfirmationTrait;
31 protected $extensionManager;
34 * @var AuthenticationProviderGenerator
39 * @var StringConverter
41 protected $stringConverter;
49 * AuthenticationProviderCommand constructor.
51 * @param Manager $extensionManager
52 * @param AuthenticationProviderGenerator $generator
53 * @param StringConverter $stringConverter
54 * @param Validator $validator
56 public function __construct(
57 Manager $extensionManager,
58 AuthenticationProviderGenerator $generator,
59 StringConverter $stringConverter,
62 $this->extensionManager = $extensionManager;
63 $this->generator = $generator;
64 $this->stringConverter = $stringConverter;
65 $this->validator = $validator;
66 parent::__construct();
69 protected function configure()
72 ->setName('generate:authentication:provider')
73 ->setDescription($this->trans('commands.generate.authentication.provider.description'))
74 ->setHelp($this->trans('commands.generate.authentication.provider.help'))
75 ->addOption('module', null, InputOption::VALUE_REQUIRED, $this->trans('commands.common.options.module'))
79 InputOption::VALUE_OPTIONAL,
80 $this->trans('commands.generate.authentication.provider.options.class')
85 InputOption::VALUE_OPTIONAL,
86 $this->trans('commands.generate.authentication.provider.options.provider-id')
88 ->setAliases(['gap']);
94 protected function execute(InputInterface $input, OutputInterface $output)
96 // @see use Drupal\Console\Command\Shared\ConfirmationTrait::confirmOperation
97 if (!$this->confirmOperation()) {
101 $module = $input->getOption('module');
102 $class = $this->validator->validateClassName($input->getOption('class'));
103 $provider_id = $input->getOption('provider-id');
105 $this->generator->generate([
108 'provider_id' => $provider_id,
114 protected function interact(InputInterface $input, OutputInterface $output)
116 $stringUtils = $this->stringConverter;
119 $this->getModuleOption();
122 $class = $input->getOption('class');
124 $class = $this->getIo()->ask(
126 'commands.generate.authentication.provider.questions.class'
128 'DefaultAuthenticationProvider',
130 return $this->validator->validateClassName($class);
133 $input->setOption('class', $class);
135 // --provider-id option
136 $provider_id = $input->getOption('provider-id');
138 $provider_id = $this->getIo()->ask(
139 $this->trans('commands.generate.authentication.provider.questions.provider-id'),
140 $stringUtils->camelCaseToUnderscore($class),
141 function ($value) use ($stringUtils) {
142 if (!strlen(trim($value))) {
143 throw new \Exception('The Class name can not be empty');
146 return $stringUtils->camelCaseToUnderscore($value);
149 $input->setOption('provider-id', $provider_id);