namespace Drupal\Console\Command\Generate;
+use Drupal\Console\Command\Shared\ArrayInputTrait;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Command\Command;
+use Drupal\Console\Core\Command\Command;
use Drupal\Console\Command\Shared\ModuleTrait;
use Drupal\Console\Command\Shared\PermissionTrait;
use Drupal\Console\Generator\PermissionGenerator;
-use Drupal\Console\Command\Shared\ConfirmationTrait;
-use Drupal\Console\Core\Command\Shared\CommandTrait;
-use Drupal\Console\Core\Style\DrupalStyle;
use Drupal\Console\Extension\Manager;
use Drupal\Console\Core\Utils\StringConverter;
+use Drupal\Console\Utils\Validator;
class PermissionCommand extends Command
{
- use CommandTrait;
+ use ArrayInputTrait;
use ModuleTrait;
use PermissionTrait;
- use ConfirmationTrait;
/**
* @var Manager
*/
protected $generator;
+ /**
+ * @var Validator
+ */
+ protected $validator;
+
/**
* PermissionCommand constructor.
*
public function __construct(
Manager $extensionManager,
StringConverter $stringConverter,
- PermissionGenerator $permissionGenerator
+ PermissionGenerator $permissionGenerator,
+ Validator $validator
) {
$this->extensionManager = $extensionManager;
$this->stringConverter = $stringConverter;
$this->generator = $permissionGenerator;
+ $this->validator = $validator;
parent::__construct();
}
{
$this
->setName('generate:permissions')
- ->setDescription($this->trans('commands.generate.permission.description'))
- ->setHelp($this->trans('commands.generate.permission.help'))
+ ->setDescription($this->trans('commands.generate.permissions.description'))
+ ->setHelp($this->trans('commands.generate.permissions.help'))
->addOption(
'module',
null,
->addOption(
'permissions',
null,
- InputOption::VALUE_OPTIONAL,
+ InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY,
$this->trans('commands.common.options.permissions')
- );
+ )
+ ->setAliases(['gp']);
}
/**
$module = $input->getOption('module');
$permissions = $input->getOption('permissions');
$learning = $input->hasOption('learning');
+ $noInteraction = $input->getOption('no-interaction');
+ // Parse nested data.
+ if ($noInteraction) {
+ $permissions = $this->explodeInlineArray($permissions);
+ }
-
- $this->generator->generate($module, $permissions, $learning);
+ $this->generator->generate([
+ 'module_name' => $module,
+ 'permissions' => $permissions,
+ 'learning' => $learning,
+ ]);
}
/**
*/
protected function interact(InputInterface $input, OutputInterface $output)
{
- $io = new DrupalStyle($input, $output);
-
// --module option
- $module = $input->getOption('module');
- if (!$module) {
- // @see Drupal\Console\Command\Shared\ModuleTrait::moduleQuestion
- $module = $this->moduleQuestion($io);
- $input->setOption('module', $module);
- }
+ $this->getModuleOption();
// --permissions option
$permissions = $input->getOption('permissions');
if (!$permissions) {
// @see \Drupal\Console\Command\Shared\PermissionTrait::permissionQuestion
- $permissions = $this->permissionQuestion($io);
- $input->setOption('permissions', $permissions);
+ $permissions = $this->permissionQuestion();
+ } else {
+ $permissions = $this->explodeInlineArray($permissions);
}
+
+ $input->setOption('permissions', $permissions);
}
}