Skip to content

Commit

Permalink
[console] Add validation in the class field in the commands (#3534)
Browse files Browse the repository at this point in the history
  • Loading branch information
hjuarez20 authored and jmolivas committed Oct 28, 2017
1 parent 1180442 commit 5392ca3
Show file tree
Hide file tree
Showing 31 changed files with 428 additions and 169 deletions.
42 changes: 21 additions & 21 deletions config/services/generate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ services:
- { name: drupal.command }
console.generate_authentication_provider:
class: Drupal\Console\Command\Generate\AuthenticationProviderCommand
arguments: ['@console.extension_manager', '@console.authentication_provider_generator', '@console.string_converter']
arguments: ['@console.extension_manager', '@console.authentication_provider_generator', '@console.string_converter', '@console.validator']
tags:
- { name: drupal.command }
console.generate_controller:
Expand All @@ -31,7 +31,7 @@ services:
- { name: drupal.command }
console.generate_form:
class: Drupal\Console\Command\Generate\FormBaseCommand
arguments: ['@console.extension_manager', '@console.form_generator', '@console.chain_queue', '@console.string_converter', '@plugin.manager.element_info', '@router.route_provider']
arguments: ['@console.extension_manager', '@console.form_generator', '@console.chain_queue', '@console.string_converter', '@console.validator', '@plugin.manager.element_info', '@router.route_provider']
tags:
- { name: drupal.command }
console.generate_form_alter:
Expand All @@ -46,47 +46,47 @@ services:
- { name: drupal.command }
console.generate_event_subscriber:
class: Drupal\Console\Command\Generate\EventSubscriberCommand
arguments: ['@console.extension_manager', '@console.event_subscriber_generator', '@console.string_converter', '@event_dispatcher', '@console.chain_queue']
arguments: ['@console.extension_manager', '@console.event_subscriber_generator', '@console.string_converter', '@console.validator', '@event_dispatcher', '@console.chain_queue']
tags:
- { name: drupal.command }
console.generate_form_config:
class: Drupal\Console\Command\Generate\ConfigFormBaseCommand
arguments: ['@console.extension_manager', '@console.form_generator', '@console.string_converter', '@router.route_provider', '@plugin.manager.element_info', '@app.root', '@console.chain_queue']
arguments: ['@console.extension_manager', '@console.form_generator', '@console.string_converter', '@console.validator', '@router.route_provider', '@plugin.manager.element_info', '@app.root', '@console.chain_queue']
tags:
- { name: drupal.command }
console.generate_plugin_type_annotation:
class: Drupal\Console\Command\Generate\PluginTypeAnnotationCommand
arguments: ['@console.extension_manager', '@console.plugin_type_annotation_generator', '@console.string_converter']
arguments: ['@console.extension_manager', '@console.plugin_type_annotation_generator', '@console.string_converter', '@console.validator']
tags:
- { name: drupal.command }
console.generate_plugin_condition:
class: Drupal\Console\Command\Generate\PluginConditionCommand
arguments: ['@console.extension_manager', '@console.plugin_condition_generator', '@console.chain_queue', '@entity_type.repository', '@console.string_converter']
arguments: ['@console.extension_manager', '@console.plugin_condition_generator', '@console.chain_queue', '@entity_type.repository', '@console.string_converter', '@console.validator']
tags:
- { name: drupal.command }
console.generate_plugin_field:
class: Drupal\Console\Command\Generate\PluginFieldCommand
arguments: ['@console.extension_manager','@console.string_converter', '@console.chain_queue']
arguments: ['@console.extension_manager','@console.string_converter', '@console.validator', '@console.chain_queue']
tags:
- { name: drupal.command }
console.generate_plugin_field_formatter:
class: Drupal\Console\Command\Generate\PluginFieldFormatterCommand
arguments: ['@console.extension_manager', '@console.plugin_field_formatter_generator','@console.string_converter', '@plugin.manager.field.field_type', '@console.chain_queue']
arguments: ['@console.extension_manager', '@console.plugin_field_formatter_generator','@console.string_converter', '@console.validator', '@plugin.manager.field.field_type', '@console.chain_queue']
tags:
- { name: drupal.command }
console.generate_plugin_field_type:
class: Drupal\Console\Command\Generate\PluginFieldTypeCommand
arguments: ['@console.extension_manager', '@console.plugin_field_type_generator','@console.string_converter', '@console.chain_queue']
arguments: ['@console.extension_manager', '@console.plugin_field_type_generator','@console.string_converter', '@console.validator', '@console.chain_queue']
tags:
- { name: drupal.command }
console.generate_plugin_field_widget:
class: Drupal\Console\Command\Generate\PluginFieldWidgetCommand
arguments: ['@console.extension_manager', '@console.plugin_field_widget_generator','@console.string_converter', '@plugin.manager.field.field_type', '@console.chain_queue']
arguments: ['@console.extension_manager', '@console.plugin_field_widget_generator','@console.string_converter', '@console.validator', '@plugin.manager.field.field_type', '@console.chain_queue']
tags:
- { name: drupal.command }
console.generate_plugin_image_effect:
class: Drupal\Console\Command\Generate\PluginImageEffectCommand
arguments: ['@console.extension_manager', '@console.plugin_image_effect_generator','@console.string_converter', '@console.chain_queue']
arguments: ['@console.extension_manager', '@console.plugin_image_effect_generator','@console.string_converter', '@console.validator', '@console.chain_queue']
tags:
- { name: drupal.command }
console.generate_plugin_image_formatter:
Expand All @@ -106,17 +106,17 @@ services:
- { name: drupal.command }
console.generate_plugin_migrate_process:
class: Drupal\Console\Command\Generate\PluginMigrateProcessCommand
arguments: [ '@console.plugin_migrate_process_generator', '@console.chain_queue', '@console.extension_manager', '@console.string_converter']
arguments: [ '@console.plugin_migrate_process_generator', '@console.chain_queue', '@console.extension_manager', '@console.string_converter', '@console.validator']
tags:
- { name: drupal.command }
console.generate_plugin_rest_resource:
class: Drupal\Console\Command\Generate\PluginRestResourceCommand
arguments: ['@console.extension_manager', '@console.plugin_rest_resource_generator','@console.string_converter', '@console.chain_queue']
arguments: ['@console.extension_manager', '@console.plugin_rest_resource_generator','@console.string_converter', '@console.validator', '@console.chain_queue']
tags:
- { name: drupal.command }
console.generate_plugin_rules_action:
class: Drupal\Console\Command\Generate\PluginRulesActionCommand
arguments: ['@console.extension_manager', '@console.plugin_rules_action_generator','@console.string_converter', '@console.chain_queue']
arguments: ['@console.extension_manager', '@console.plugin_rules_action_generator','@console.string_converter', '@console.validator', '@console.chain_queue']
tags:
- { name: drupal.command }
console.generate_plugin_skeleton:
Expand All @@ -126,12 +126,12 @@ services:
- { name: drupal.command }
console.generate_plugin_type_yaml:
class: Drupal\Console\Command\Generate\PluginTypeYamlCommand
arguments: ['@console.extension_manager', '@console.plugin_type_yaml_generator','@console.string_converter']
arguments: ['@console.extension_manager', '@console.plugin_type_yaml_generator','@console.string_converter', '@console.validator']
tags:
- { name: drupal.command }
console.generate_plugin_views_field:
class: Drupal\Console\Command\Generate\PluginViewsFieldCommand
arguments: ['@console.extension_manager', '@console.plugin_views_field_generator', '@console.site','@console.string_converter','@console.chain_queue']
arguments: ['@console.extension_manager', '@console.plugin_views_field_generator', '@console.site','@console.string_converter', '@console.validator', '@console.chain_queue']
tags:
- { name: drupal.command }
console.generate_post_update:
Expand All @@ -146,12 +146,12 @@ services:
- { name: drupal.command }
console.generate_route_subscriber:
class: Drupal\Console\Command\Generate\RouteSubscriberCommand
arguments: ['@console.extension_manager', '@console.route_subscriber_generator', '@console.chain_queue']
arguments: ['@console.extension_manager', '@console.route_subscriber_generator', '@console.chain_queue', '@console.validator']
tags:
- { name: drupal.command }
console.generate_service:
class: Drupal\Console\Command\Generate\ServiceCommand
arguments: ['@console.extension_manager', '@console.service_generator', '@console.string_converter', '@console.chain_queue']
arguments: ['@console.extension_manager', '@console.service_generator', '@console.string_converter', '@console.validator', '@console.chain_queue']
tags:
- { name: drupal.command }
console.generate_theme:
Expand All @@ -161,7 +161,7 @@ services:
- { name: drupal.command }
console.generate_twig_extension:
class: Drupal\Console\Command\Generate\TwigExtensionCommand
arguments: ['@console.extension_manager', '@console.twig_extension_generator', '@console.site', '@console.string_converter', '@console.chain_queue']
arguments: ['@console.extension_manager', '@console.twig_extension_generator', '@console.site', '@console.string_converter', '@console.validator', '@console.chain_queue']
tags:
- { name: drupal.command }
console.generate_update:
Expand All @@ -181,7 +181,7 @@ services:
- { name: drupal.command }
console.generate_ckeditorbutton:
class: Drupal\Console\Command\Generate\PluginCKEditorButtonCommand
arguments: ['@console.chain_queue', '@console.command_ckeditorbutton', '@console.extension_manager', '@console.string_converter']
arguments: ['@console.chain_queue', '@console.command_ckeditorbutton', '@console.extension_manager', '@console.string_converter', '@console.validator']
tags:
- { name: drupal.command }
console.generate_entitycontent:
Expand All @@ -201,7 +201,7 @@ services:
- { name: drupal.command }
console.generate_cache_context:
class: Drupal\Console\Command\Generate\CacheContextCommand
arguments: [ '@console.cache_context_generator', '@console.chain_queue', '@console.extension_manager', '@console.string_converter']
arguments: [ '@console.cache_context_generator', '@console.chain_queue', '@console.extension_manager', '@console.string_converter', '@console.validator']
tags:
- { name: drupal.command }
console.generate_js_test:
Expand Down
28 changes: 16 additions & 12 deletions src/Command/Generate/AuthenticationProviderCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

namespace Drupal\Console\Command\Generate;

use Drupal\Console\Utils\Validator;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
Expand All @@ -28,36 +29,43 @@ class AuthenticationProviderCommand extends Command
use ConfirmationTrait;

/**
* @var Manager
*/
* @var Manager
*/
protected $extensionManager;

/**
* @var AuthenticationProviderGenerator
*/
* @var AuthenticationProviderGenerator
*/
protected $generator;

/**
* @var StringConverter
*/
protected $stringConverter;

/**
* @var Validator
*/
protected $validator;

/**
* AuthenticationProviderCommand constructor.
*
* @param Manager $extensionManager
* @param AuthenticationProviderGenerator $generator
* @param StringConverter $stringConverter
* @param Validator $validator
*/
public function __construct(
Manager $extensionManager,
AuthenticationProviderGenerator $generator,
StringConverter $stringConverter
StringConverter $stringConverter,
Validator $validator
) {
$this->extensionManager = $extensionManager;
$this->generator = $generator;
$this->stringConverter = $stringConverter;
$this->validator = $validator;
parent::__construct();
}

Expand Down Expand Up @@ -96,7 +104,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
}

$module = $input->getOption('module');
$class = $input->getOption('class');
$class = $this->validator->validateClassName($input->getOption('class'));
$provider_id = $input->getOption('provider-id');

$this->generator->generate($module, $class, $provider_id);
Expand Down Expand Up @@ -126,12 +134,8 @@ protected function interact(InputInterface $input, OutputInterface $output)
'commands.generate.authentication.provider.questions.class'
),
'DefaultAuthenticationProvider',
function ($value) use ($stringUtils) {
if (!strlen(trim($value))) {
throw new \Exception('The Class name can not be empty');
}

return $stringUtils->humanToCamelCase($value);
function ($class) {
return $this->validator->validateClassName($class);
}
);
$input->setOption('class', $class);
Expand Down
69 changes: 41 additions & 28 deletions src/Command/Generate/CacheContextCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

namespace Drupal\Console\Command\Generate;

use Drupal\Console\Utils\Validator;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
Expand All @@ -27,60 +28,69 @@ class CacheContextCommand extends ContainerAwareCommand
use ServicesTrait;

/**
* @var CacheContextGenerator
*/
* @var CacheContextGenerator
*/
protected $generator;

/**
* @var ChainQueue
*/
* @var ChainQueue
*/
protected $chainQueue;

/**
* @var Manager
*/
* @var Manager
*/
protected $extensionManager;

/**
* @var StringConverter
*/
* @var StringConverter
*/
protected $stringConverter;

/**
* CacheContextCommand constructor.
*
* @param CacheContextGenerator $generator
* @param ChainQueue $chainQueue
* @param Manager $extensionManager
* @param StringConverter $stringConverter
*/
* @var Validator
*/
protected $validator;

/**
* CacheContextCommand constructor.
*
* @param CacheContextGenerator $generator
* @param ChainQueue $chainQueue
* @param Manager $extensionManager
* @param StringConverter $stringConverter
* @param Validator $validator
*/
public function __construct(
CacheContextGenerator $generator,
ChainQueue $chainQueue,
Manager $extensionManager,
StringConverter $stringConverter
StringConverter $stringConverter,
Validator $validator
) {
$this->generator = $generator;
$this->chainQueue = $chainQueue;
$this->extensionManager = $extensionManager;
$this->stringConverter = $stringConverter;
$this->validator = $validator;
parent::__construct();
}

/**
* {@inheritdoc}
*/
* {@inheritdoc}
*/
protected function configure()
{
$this
->setName('generate:cache:context')
->setDescription($this->trans('commands.generate.cache.context.description'))
->setHelp($this->trans('commands.generate.cache.context.description'))
->addOption(
'module',
null,
InputOption::VALUE_REQUIRED,
$this->trans('commands.common.options.module'))
'module',
null,
InputOption::VALUE_REQUIRED,
$this->trans('commands.common.options.module')
)
->addOption(
'cache-context',
null,
Expand All @@ -102,8 +112,8 @@ protected function configure()
}

/**
* {@inheritdoc}
*/
* {@inheritdoc}
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$io = new DrupalStyle($input, $output);
Expand All @@ -115,7 +125,7 @@ protected function execute(InputInterface $input, OutputInterface $output)

$module = $input->getOption('module');
$cache_context = $input->getOption('cache-context');
$class = $input->getOption('class');
$class = $this->validator->validateClassName($input->getOption('class'));
$services = $input->getOption('services');

// @see Drupal\Console\Command\Shared\ServicesTrait::buildServices
Expand All @@ -127,8 +137,8 @@ protected function execute(InputInterface $input, OutputInterface $output)
}

/**
* {@inheritdoc}
*/
* {@inheritdoc}
*/
protected function interact(InputInterface $input, OutputInterface $output)
{
$io = new DrupalStyle($input, $output);
Expand Down Expand Up @@ -156,7 +166,10 @@ protected function interact(InputInterface $input, OutputInterface $output)
if (!$class) {
$class = $io->ask(
$this->trans('commands.generate.cache.context.questions.class'),
'DefaultCacheContext'
'DefaultCacheContext',
function ($class) {
return $this->validator->validateClassName($class);
}
);
$input->setOption('class', $class);
}
Expand Down
3 changes: 1 addition & 2 deletions src/Command/Generate/CommandCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
use Drupal\Console\Utils\Site;

class CommandCommand extends ContainerAwareCommand

{
use ConfirmationTrait;
use ServicesTrait;
Expand Down Expand Up @@ -142,7 +141,7 @@ protected function execute(InputInterface $input, OutputInterface $output)

$extension = $input->getOption('extension');
$extensionType = $input->getOption('extension-type');
$class = $input->getOption('class');
$class = $this->validator->validateCommandName($input->getOption('class'));
$name = $input->getOption('name');
$interact = $input->getOption('interact');
$containerAware = $input->getOption('container-aware');
Expand Down
Loading

0 comments on commit 5392ca3

Please sign in to comment.