Yaffs site version 1.1
[yaffs-website] / vendor / drupal / console / src / Command / Generate / PermissionCommand.php
1 <?php
2
3 /**
4  * @file
5  * Contains Drupal\Console\Command\Generate\PermissionCommand.
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 Symfony\Component\Console\Command\Command;
14 use Drupal\Console\Command\Shared\ModuleTrait;
15 use Drupal\Console\Command\Shared\PermissionTrait;
16 use Drupal\Console\Generator\PermissionGenerator;
17 use Drupal\Console\Command\Shared\ConfirmationTrait;
18 use Drupal\Console\Core\Command\Shared\CommandTrait;
19 use Drupal\Console\Core\Style\DrupalStyle;
20 use Drupal\Console\Extension\Manager;
21 use Drupal\Console\Core\Utils\StringConverter;
22
23 class PermissionCommand extends Command
24 {
25     use CommandTrait;
26     use ModuleTrait;
27     use PermissionTrait;
28     use ConfirmationTrait;
29
30     /**
31      * @var Manager
32      */
33     protected $extensionManager;
34
35     /**
36      * @var StringConverter
37      */
38     protected $stringConverter;
39
40     /**
41      * @var PermissionGenerator;
42      */
43     protected $generator;
44
45     /**
46      * PermissionCommand constructor.
47      *
48      * @param Manager         $extensionManager
49      * @param StringConverter $stringConverter
50      */
51     public function __construct(
52         Manager $extensionManager,
53         StringConverter $stringConverter,
54         PermissionGenerator $permissionGenerator
55     ) {
56         $this->extensionManager = $extensionManager;
57         $this->stringConverter = $stringConverter;
58         $this->generator = $permissionGenerator;
59         parent::__construct();
60     }
61
62     /**
63      * {@inheritdoc}
64      */
65     protected function configure()
66     {
67         $this
68             ->setName('generate:permissions')
69             ->setDescription($this->trans('commands.generate.permission.description'))
70             ->setHelp($this->trans('commands.generate.permission.help'))
71             ->addOption(
72                 'module',
73                 null,
74                 InputOption::VALUE_REQUIRED,
75                 $this->trans('commands.common.options.module')
76             )
77             ->addOption(
78                 'permissions',
79                 null,
80                 InputOption::VALUE_OPTIONAL,
81                 $this->trans('commands.common.options.permissions')
82             );
83     }
84
85     /**
86      * {@inheritdoc}
87      */
88     protected function execute(InputInterface $input, OutputInterface $output)
89     {
90         $module = $input->getOption('module');
91         $permissions = $input->getOption('permissions');
92         $learning = $input->hasOption('learning');
93
94
95         $this->generator->generate($module, $permissions, $learning);
96     }
97
98     /**
99      * {@inheritdoc}
100      */
101     protected function interact(InputInterface $input, OutputInterface $output)
102     {
103         $io = new DrupalStyle($input, $output);
104
105         // --module option
106         $module = $input->getOption('module');
107         if (!$module) {
108             // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
109             $module = $this->moduleQuestion($io);
110             $input->setOption('module', $module);
111         }
112
113         // --permissions option
114         $permissions = $input->getOption('permissions');
115         if (!$permissions) {
116             // @see \Drupal\Console\Command\Shared\PermissionTrait::permissionQuestion
117             $permissions = $this->permissionQuestion($io);
118             $input->setOption('permissions', $permissions);
119         }
120     }
121 }