Yaffs site version 1.1
[yaffs-website] / vendor / drupal / console / src / Command / Generate / AuthenticationProviderCommand.php
1 <?php
2
3 /**
4  * @file
5  * Contains \Drupal\Console\Command\Generate\AuthenticationProviderCommand.
6  */
7
8 namespace Drupal\Console\Command\Generate;
9
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;
23
24 class AuthenticationProviderCommand extends Command
25 {
26     use ServicesTrait;
27     use ModuleTrait;
28     use FormTrait;
29     use ConfirmationTrait;
30     use CommandTrait;
31
32     /**
33  * @var Manager
34 */
35     protected $extensionManager;
36
37     /**
38  * @var AuthenticationProviderGenerator
39 */
40     protected $generator;
41
42     /**
43      * @var StringConverter
44      */
45     protected $stringConverter;
46
47
48     /**
49      * AuthenticationProviderCommand constructor.
50      *
51      * @param Manager                         $extensionManager
52      * @param AuthenticationProviderGenerator $generator
53      * @param StringConverter                 $stringConverter
54      */
55     public function __construct(
56         Manager $extensionManager,
57         AuthenticationProviderGenerator $generator,
58         StringConverter $stringConverter
59     ) {
60         $this->extensionManager = $extensionManager;
61         $this->generator = $generator;
62         $this->stringConverter = $stringConverter;
63         parent::__construct();
64     }
65
66     protected function configure()
67     {
68         $this
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'))
73             ->addOption(
74                 'class',
75                 null,
76                 InputOption::VALUE_OPTIONAL,
77                 $this->trans('commands.generate.authentication.provider.options.class')
78             )
79             ->addOption(
80                 'provider-id',
81                 null,
82                 InputOption::VALUE_OPTIONAL,
83                 $this->trans('commands.generate.authentication.provider.options.provider-id')
84             );
85     }
86
87     /**
88      * {@inheritdoc}
89      */
90     protected function execute(InputInterface $input, OutputInterface $output)
91     {
92         $io = new DrupalStyle($input, $output);
93
94         // @see use Drupal\Console\Command\Shared\ConfirmationTrait::confirmGeneration
95         if (!$this->confirmGeneration($io)) {
96             return 1;
97         }
98
99         $module = $input->getOption('module');
100         $class = $input->getOption('class');
101         $provider_id = $input->getOption('provider-id');
102
103         $this->generator->generate($module, $class, $provider_id);
104
105         return 0;
106     }
107
108     protected function interact(InputInterface $input, OutputInterface $output)
109     {
110         $io = new DrupalStyle($input, $output);
111
112         $stringUtils = $this->stringConverter;
113
114         // --module option
115         $module = $input->getOption('module');
116         if (!$module) {
117             // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
118             $module = $this->moduleQuestion($io);
119             $input->setOption('module', $module);
120         }
121
122         // --class option
123         $class = $input->getOption('class');
124         if (!$class) {
125             $class = $io->ask(
126                 $this->trans(
127                     'commands.generate.authentication.provider.options.class'
128                 ),
129                 'DefaultAuthenticationProvider',
130                 function ($value) use ($stringUtils) {
131                     if (!strlen(trim($value))) {
132                         throw new \Exception('The Class name can not be empty');
133                     }
134
135                     return $stringUtils->humanToCamelCase($value);
136                 }
137             );
138             $input->setOption('class', $class);
139         }
140         // --provider-id option
141         $provider_id = $input->getOption('provider-id');
142         if (!$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');
149                     }
150
151                     return $stringUtils->camelCaseToUnderscore($value);
152                 }
153             );
154             $input->setOption('provider-id', $provider_id);
155         }
156     }
157 }