From c842348dbbb99464c83cf1a3efb02fac3a1a3494 Mon Sep 17 00:00:00 2001 From: Jesus Manuel Olivas Date: Wed, 16 Jul 2014 22:37:47 -0700 Subject: [PATCH 1/9] Add open/end braces --- src/Utils/Validators.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Utils/Validators.php b/src/Utils/Validators.php index c3efc77db..de21574b1 100644 --- a/src/Utils/Validators.php +++ b/src/Utils/Validators.php @@ -15,10 +15,12 @@ public function __construct() public function validateModuleName($module) { - if (!empty($module)) + if (!empty($module)) { return $module; - else + } + else { throw new \InvalidArgumentException(sprintf('Module name "%s" is invalid.', $module)); + } } public function validateModulePath($module_path) From 435fa1d8b7ace1410eca10eb9dcb630132410454 Mon Sep 17 00:00:00 2001 From: Jesus Manuel Olivas Date: Wed, 16 Jul 2014 23:39:58 -0700 Subject: [PATCH 2/9] Add validateClassName method --- src/Utils/Validators.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/Utils/Validators.php b/src/Utils/Validators.php index de21574b1..b92a9459a 100644 --- a/src/Utils/Validators.php +++ b/src/Utils/Validators.php @@ -9,6 +9,8 @@ class Validators { + const REGEX_CLASS_NAME = '/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]+$/'; + public function __construct() { } @@ -23,6 +25,14 @@ public function validateModuleName($module) } } + public function validateClassName($class_name){ + if (preg_match(self::REGEX_CLASS_NAME, $class_name)) { + return $class_name; + } else { + throw new \InvalidArgumentException(sprintf('Class name "%s" is invalid.', $class_name)); + } + } + public function validateModulePath($module_path) { if (!is_dir($module_path)) { From 9b95a9ce746e4fdac1af84c1cf02caa4b8343ae6 Mon Sep 17 00:00:00 2001 From: Jesus Manuel Olivas Date: Wed, 16 Jul 2014 23:40:15 -0700 Subject: [PATCH 3/9] Add validateMachineName method --- src/Utils/Validators.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Utils/Validators.php b/src/Utils/Validators.php index b92a9459a..f6366ce54 100644 --- a/src/Utils/Validators.php +++ b/src/Utils/Validators.php @@ -10,6 +10,7 @@ class Validators { const REGEX_CLASS_NAME = '/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]+$/'; + const REGEX_MACHINE_NAME = '/^[a-z0-9_]+$/'; public function __construct() { @@ -33,6 +34,14 @@ public function validateClassName($class_name){ } } + public function validateMachineName($machine_name){ + if (preg_match(self::REGEX_MACHINE_NAME, $machine_name)) { + return $machine_name; + } else { + throw new \InvalidArgumentException(sprintf('Machine name "%s" is invalid.', $machine_name)); + } + } + public function validateModulePath($module_path) { if (!is_dir($module_path)) { From c51c16bbd4a93fbfe9f07525f2bf14fb0fa06d72 Mon Sep 17 00:00:00 2001 From: Jesus Manuel Olivas Date: Wed, 16 Jul 2014 23:43:17 -0700 Subject: [PATCH 4/9] Add validateClassName method --- src/Command/ContainerAwareCommand.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Command/ContainerAwareCommand.php b/src/Command/ContainerAwareCommand.php index c2dc7ad9a..5de507ad1 100644 --- a/src/Command/ContainerAwareCommand.php +++ b/src/Command/ContainerAwareCommand.php @@ -121,6 +121,11 @@ public function validateModulePath($module_path) return $this->getValidator()->validateModulePath($module_path); } + public function validateClassName($class_name) + { + return $this->getValidator()->validateClassName($class_name); + } + /** * @return \Drupal\AppConsole\Utils\StringUtils */ From dd6760daea8ef0de8bf657a4392f1ddf4b17b2d2 Mon Sep 17 00:00:00 2001 From: Jesus Manuel Olivas Date: Wed, 16 Jul 2014 23:43:36 -0700 Subject: [PATCH 5/9] Add validateMachineName method --- src/Command/ContainerAwareCommand.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Command/ContainerAwareCommand.php b/src/Command/ContainerAwareCommand.php index 5de507ad1..f1b3d8e8c 100644 --- a/src/Command/ContainerAwareCommand.php +++ b/src/Command/ContainerAwareCommand.php @@ -126,6 +126,11 @@ public function validateClassName($class_name) return $this->getValidator()->validateClassName($class_name); } + public function validateMachineName($machine_name) + { + return $this->getValidator()->validateMachineName($machine_name); + } + /** * @return \Drupal\AppConsole\Utils\StringUtils */ From ac5145e02936ceec1443a0b5ff9332691a6634bd Mon Sep 17 00:00:00 2001 From: Jesus Manuel Olivas Date: Wed, 16 Jul 2014 23:44:05 -0700 Subject: [PATCH 6/9] Add call to validateMachineName method --- src/Command/ContainerAwareCommand.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Command/ContainerAwareCommand.php b/src/Command/ContainerAwareCommand.php index f1b3d8e8c..9fc46b229 100644 --- a/src/Command/ContainerAwareCommand.php +++ b/src/Command/ContainerAwareCommand.php @@ -104,6 +104,7 @@ public function validateServiceExist($service_name, $services = null) public function validateModule($machine_name) { + $machine_name = $this->validateMachineName($machine_name); $modules = array_merge($this->getModules(true), $this->getModules()); if (in_array($machine_name, $modules)) { throw new \InvalidArgumentException(sprintf('Module "%s" already exist.', $machine_name)); From bf06d1e8e864fbd4acfe411830f80a3bc145aa8c Mon Sep 17 00:00:00 2001 From: Jesus Manuel Olivas Date: Wed, 16 Jul 2014 23:46:33 -0700 Subject: [PATCH 7/9] Replace dialog method ask by askAndValidate apply new validator --- src/Command/GeneratorControllerCommand.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Command/GeneratorControllerCommand.php b/src/Command/GeneratorControllerCommand.php index bc0be6d46..bbf9a0660 100644 --- a/src/Command/GeneratorControllerCommand.php +++ b/src/Command/GeneratorControllerCommand.php @@ -87,10 +87,16 @@ protected function interact(InputInterface $input, OutputInterface $output) // --class-name option $class_name = $input->getOption('class-name'); if (!$class_name) { - $class_name = $dialog->ask( + $class_name = 'DefaultController'; + $class_name = $dialog->askAndValidate( $output, - $dialog->getQuestion('Enter the controller name', 'DefaultController'), - 'DefaultController' + $dialog->getQuestion('Enter the controller class name', $class_name), + function ($class_name) { + return $this->validateClassName($class_name); + }, + false, + $class_name, + null ); } $input->setOption('class-name', $class_name); From 25f18452fab87c7f3533d3c125347225e85cbc6d Mon Sep 17 00:00:00 2001 From: Jesus Manuel Olivas Date: Wed, 16 Jul 2014 23:47:02 -0700 Subject: [PATCH 8/9] Apply new validators --- src/Command/GeneratorModuleCommand.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Command/GeneratorModuleCommand.php b/src/Command/GeneratorModuleCommand.php index 664aeb218..d9ab39813 100644 --- a/src/Command/GeneratorModuleCommand.php +++ b/src/Command/GeneratorModuleCommand.php @@ -49,7 +49,7 @@ protected function execute(InputInterface $input, OutputInterface $output) } } - $module = $this->validateModule($input->getOption('module')); + $module = $this->validateModuleName($input->getOption('module')); $module_path = $this->validateModulePath($input->getOption('module-path')); $description = $input->getOption('description'); $core = $input->getOption('core'); @@ -57,7 +57,7 @@ protected function execute(InputInterface $input, OutputInterface $output) $controller = $input->getOption('controller'); $tests = $input->getOption('tests'); $structure = $input->getOption('structure'); - $machine_name = $input->getOption('machine-name'); + $machine_name = $this->validateModule($input->getOption('machine-name')); $generator = $this->getGenerator(); $generator->generate($module, $machine_name, $module_path, $description, $core, $package, $controller, $tests, $structure); From 68f44639f1b2d1f3882598dda939ca6b9de62a53 Mon Sep 17 00:00:00 2001 From: Jesus Manuel Olivas Date: Wed, 16 Jul 2014 23:47:12 -0700 Subject: [PATCH 9/9] Replace dialog method ask by askAndValidate apply new validator --- src/Command/GeneratorModuleCommand.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Command/GeneratorModuleCommand.php b/src/Command/GeneratorModuleCommand.php index d9ab39813..48000a789 100644 --- a/src/Command/GeneratorModuleCommand.php +++ b/src/Command/GeneratorModuleCommand.php @@ -90,7 +90,16 @@ protected function interact(InputInterface $input, OutputInterface $output) } if (!$module) { - $module = $dialog->ask($output, $dialog->getQuestion('Module name', '')); + $module = $dialog->askAndValidate( + $output, + $dialog->getQuestion('Module name', ''), + function ($module) { + return $this->validateModuleName($module); + }, + false, + null, + null + ); } $input->setOption('module', $module);