Skip to content

Commit fc2f6cd

Browse files
committed
Update branch to latest dev version
1 parent 2656f21 commit fc2f6cd

36 files changed

Lines changed: 549 additions & 158 deletions

Tests/Command/GeneratorModuleCommandTest.php

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ class GeneratorModuleCommandTest extends GenerateCommandTest
1515
*/
1616
public function testInteractive($options, $expected, $input)
1717
{
18-
list($module, $dir, $description, $core, $package, $controller, $tests, $setting, $structure, $skip_root) = $expected;
18+
list($module, $machine_name, $dir, $description, $core, $package, $controller, $tests, $structure) = $expected;
1919

2020
$generator = $this->getGenerator();
2121

2222
$generator
2323
->expects($this->once())
2424
->method('generate')
25-
->with($module, $dir, $description, $core, $package, $controller, $tests, $setting, $structure, $skip_root)
25+
->with($module, $machine_name, $dir, $description, $core, $package, $controller, $tests, $structure)
2626
;
2727

2828
$command = $this->getCommand($generator, $input);
@@ -39,14 +39,8 @@ public function getInteractiveData()
3939
// case one basic options
4040
[
4141
[],
42-
['foo', $dir, 'My Awesome Module', '8.x', 'Other', false, true, false, true, false],
43-
"foo\n$dir\n"
44-
],
45-
// case two skip-root
46-
[
47-
['--skip-root'=> true,'--module-path'=> $dir,'--description'=>'My old module','--package'=>'Other'],
48-
['foo', $dir, "My old module", '8.x', 'Other', false, true, false, true, true],
49-
"foo"
42+
['foo', 'foo', $dir, 'My Awesome Module', '8.x', 'Other', false, true, true],
43+
"foo\nfoo\n$dir\n"
5044
],
5145
];
5246
}
@@ -56,14 +50,14 @@ public function getInteractiveData()
5650
*/
5751
public function testNoInteractive($options, $expected)
5852
{
59-
list($module, $dir, $description, $core, $package, $controller, $tests, $setting, $structure, $skip_root) = $expected;
53+
list($module, $machine_name, $dir, $description, $core, $package, $controller, $tests, $structure) = $expected;
6054

6155
$generator = $this->getGenerator();
6256

6357
$generator
6458
->expects($this->once())
6559
->method('generate')
66-
->with($module, $dir, $description, $core, $package, $controller, $tests, $setting, $structure, $skip_root)
60+
->with($module, $machine_name, $dir, $description, $core, $package, $controller, $tests, $structure)
6761
;
6862

6963
$cmd = new CommandTester($this->getCommand($generator,''));
@@ -75,14 +69,13 @@ public function getNoInteractiveData()
7569
$dir = sys_get_temp_dir();
7670

7771
return [
78-
// case one
7972
[
80-
['--module'=>'bar','--module-path'=>$dir, '--description'=>'My Awesome Module','--core'=>'8.x','--package'=>'Other', '--controller'=>true,'--tests'=>true,'--setting'=>true,'--structure'=>true],
81-
['bar', $dir, "My Awesome Module", '8.x', 'Other', true, true, true, true, false],
73+
['--module'=>'foo', '--machine-name'=>'foo', '--module-path'=>$dir, '--description'=>'My Awesome Module','--core'=>'8.x','--package'=>'Other', '--controller'=>true,'--tests'=>true,'--structure'=>true],
74+
['foo', 'foo', $dir, "My Awesome Module", '8.x', 'Other', true, true, true],
8275
],
8376
[
84-
['--module'=>'bar','--module-path'=>$dir,'--description'=>'My Awesome Module','--core'=>'8.x','--package'=>'Other', '--controller'=>true,'--tests'=>true,'--setting'=>true,'--structure'=>true,'--skip-root'=>true],
85-
['bar', $dir, "My Awesome Module", '8.x', 'Other', true, true, true, true, true],
77+
['--module'=>'foo', '--machine-name'=>'foo', '--module-path'=>$dir,'--description'=>'My Awesome Module','--core'=>'8.x','--package'=>'Other', '--controller'=>true,'--tests'=>true,'--structure'=>true],
78+
['foo', 'foo', $dir, "My Awesome Module", '8.x', 'Other', true, true, true],
8679
]
8780
];
8881
}
@@ -92,10 +85,15 @@ protected function getCommand($generator, $input)
9285
/** @var \Drupal\AppConsole\Command\GeneratorModuleCommand $command */
9386
$command = $this
9487
->getMockBuilder('Drupal\AppConsole\Command\GeneratorModuleCommand')
95-
->setMethods(['validateModule'])
88+
->setMethods(['validateModuleName', 'validateModule'])
9689
->getMock()
9790
;
9891

92+
$command->expects($this->any())
93+
->method('validateModuleName')
94+
->will($this->returnValue('foo'));
95+
;
96+
9997
$command->expects($this->any())
10098
->method('validateModule')
10199
->will($this->returnValue('foo'));

composer.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,17 @@
2222
],
2323
"require": {
2424
"php": ">=5.4.2",
25-
"symfony/console": "~2.4",
26-
"symfony/finder": "~2.4",
27-
"symfony/dependency-injection": "~2.4",
25+
"symfony/console": "~2.4.0",
26+
"symfony/finder": "~2.4.0",
27+
"symfony/dependency-injection": "~2.4.0",
2828
"twig/twig": "~1.15",
2929
"composer/installers": "~1.0"
3030
},
3131
"require-dev": {
3232
"phpunit/phpunit": "4.1.*",
3333
"drupal/drupal": "8.x-dev@dev",
34-
"symfony/config": "~2.4",
35-
"symfony/http-kernel": "~2.4"
34+
"symfony/config": "~2.4.0",
35+
"symfony/http-kernel": "~2.4.0"
3636
},
3737
"minimum-stability": "dev",
3838
"bin": ["bin/console"],

src/Command/ContainerAwareCommand.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -102,14 +102,13 @@ public function validateServiceExist($service_name, $services = null)
102102
return $this->getValidator()->validateServiceExist($service_name, $services);
103103
}
104104

105-
public function validateModule($module_name)
105+
public function validateModule($machine_name)
106106
{
107-
$module_name = $this->validateModuleName($module_name);
108107
$modules = array_merge($this->getModules(true), $this->getModules());
109-
if (in_array($module_name, $modules)) {
110-
throw new \InvalidArgumentException(sprintf('Module "%s" already exist.', $module_name));
108+
if (in_array($machine_name, $modules)) {
109+
throw new \InvalidArgumentException(sprintf('Module "%s" already exist.', $machine_name));
111110
}
112-
return $module_name;
111+
return $machine_name;
113112
}
114113

115114
public function validateModuleName($module_name)
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
<?php
2+
/**
3+
* @file
4+
* Contains \Drupal\AppConsole\Command\GeneratorEntityCommand.
5+
*/
6+
7+
namespace Drupal\AppConsole\Command;
8+
9+
use Symfony\Component\Console\Input\InputInterface;
10+
use Symfony\Component\Console\Input\InputOption;
11+
use Symfony\Component\Console\Output\OutputInterface;
12+
use Drupal\AppConsole\Command\Helper\ModuleTrait;
13+
use Drupal\AppConsole\Generator\EntityGenerator;
14+
15+
class GeneratorEntityCommand extends GeneratorCommand
16+
{
17+
use ModuleTrait;
18+
19+
/**
20+
* {@inheritdoc}
21+
*/
22+
protected function configure()
23+
{
24+
$this
25+
->setDefinition(array(
26+
new InputOption('module','',InputOption::VALUE_REQUIRED, 'The name of the module'),
27+
new InputOption('entity','',InputOption::VALUE_REQUIRED, 'The name of the entity')
28+
))
29+
->setName('generate:entity')
30+
->setDescription('Generate entity')
31+
->setHelp('The <info>generate:entity</info> command helps you generate a new entity.');
32+
}
33+
34+
protected function execute(InputInterface $input, OutputInterface $output)
35+
{
36+
$dialog = $this->getDialogHelper();
37+
38+
$module = $input->getOption('module');
39+
$entity = $input->getOption('entity');
40+
41+
$this
42+
->getGenerator()
43+
->generate($module, $entity);
44+
45+
$errors = [];
46+
$dialog->writeGeneratorSummary($output, $errors);
47+
}
48+
49+
50+
/**
51+
* {@inheritdoc}
52+
*/
53+
protected function interact(InputInterface $input, OutputInterface $output)
54+
{
55+
$dialog = $this->getDialogHelper();
56+
$dialog->writeSection($output, 'Welcome to the Drupal entity generator');
57+
58+
// --module option
59+
$module = $input->getOption('module');
60+
if (!$module) {
61+
// @see Drupal\AppConsole\Command\Helper\ModuleTrait::moduleQuestion
62+
$module = $this->moduleQuestion($output, $dialog);
63+
}
64+
$input->setOption('module', $module);
65+
66+
// --entity option
67+
$entity = $input->getOption('entity');
68+
if (!$entity) {
69+
$entity = $dialog->ask(
70+
$output,
71+
$dialog->getQuestion('Enter the entity name', '')
72+
);
73+
}
74+
$input->setOption('entity', $entity);
75+
76+
}
77+
78+
79+
protected function createGenerator()
80+
{
81+
return new EntityGenerator();
82+
}
83+
}
84+

src/Command/GeneratorModuleCommand.php

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,7 @@ protected function configure()
2727
new InputOption('package','',InputOption::VALUE_OPTIONAL, 'Package'),
2828
new InputOption('controller', '', InputOption::VALUE_NONE, 'Generate controller'),
2929
new InputOption('tests', '', InputOption::VALUE_NONE, 'Generate tests'),
30-
new InputOption('setting', '', InputOption::VALUE_NONE, 'Generate settings file'),
3130
new InputOption('structure', '', InputOption::VALUE_NONE, 'Whether to generate the whole directory structure'),
32-
new InputOption('skip-root', '', InputOption::VALUE_NONE, 'Generate structure on module existent'),
3331
])
3432
->setDescription('Generate a module')
3533
->setHelp('The <info>generate:module</info> command helps you generates new modules.')
@@ -51,19 +49,18 @@ protected function execute(InputInterface $input, OutputInterface $output)
5149
}
5250
}
5351

54-
$module = $this->validateModuleName($input->getOption('module'));
52+
$module = $this->validateModule($input->getOption('module'));
5553
$module_path = $this->validateModulePath($input->getOption('module-path'));
5654
$description = $input->getOption('description');
5755
$core = $input->getOption('core');
5856
$package = $input->getOption('package');
5957
$controller = $input->getOption('controller');
6058
$tests = $input->getOption('tests');
61-
$setting = $input->getOption('setting');
6259
$structure = $input->getOption('structure');
63-
$skip_root = $input->getOption('skip-root');
60+
$machine_name = $input->getOption('machine-name');
6461

6562
$generator = $this->getGenerator();
66-
$generator->generate($module, $module_path, $description, $core, $package, $controller, $tests, $setting, $structure, $skip_root);
63+
$generator->generate($module, $machine_name, $module_path, $description, $core, $package, $controller, $tests, $structure);
6764

6865
$errors = [];
6966

@@ -86,18 +83,30 @@ protected function interact(InputInterface $input, OutputInterface $output)
8683
$output->writeln($dialog->getHelperSet()->get('formatter')->formatBlock($error->getMessage(), 'error'));
8784
}
8885

86+
try {
87+
$machine_name = $input->getOption('machine-name') ? $this->validateModule($input->getOption('machine-name')) : null;
88+
} catch (\Exception $error) {
89+
$output->writeln($dialog->getHelperSet()->get('formatter')->formatBlock($error->getMessage(), 'error'));
90+
}
91+
8992
if (!$module) {
90-
$module = $dialog->askAndValidate(
93+
$module = $dialog->ask($output, $dialog->getQuestion('Module name', ''));
94+
}
95+
$input->setOption('module', $module);
96+
97+
if (!$machine_name) {
98+
$machine_name = $this->getStringUtils()->createMachineName($module);
99+
$machine_name = $dialog->askAndValidate(
91100
$output,
92-
$dialog->getQuestion('Module name',''),
93-
function ($module) {
94-
return $this->validateModule($module);
101+
$dialog->getQuestion('Module machine name', $machine_name),
102+
function ($machine_name) {
103+
return $this->validateModule($machine_name);
95104
},
96105
false,
97-
null,
106+
$machine_name,
98107
null
99108
);
100-
$input->setOption('module', $module);
109+
$input->setOption('machine-name', $machine_name);
101110
}
102111

103112
$drupalBoostrap = $this->getHelperSet()->get('bootstrap');
@@ -109,19 +118,17 @@ function ($module) {
109118
}
110119
$input->setOption('module-path', $module_path);
111120

112-
if (!$input->getOption('skip-root')) {
113-
$description = $input->getOption('description');
114-
if (!$description) {
115-
$description = $dialog->ask($output, $dialog->getQuestion('Description', 'My Awesome Module'), 'My Awesome Module');
116-
}
117-
$input->setOption('description', $description);
121+
$description = $input->getOption('description');
122+
if (!$description) {
123+
$description = $dialog->ask($output, $dialog->getQuestion('Description', 'My Awesome Module'), 'My Awesome Module');
124+
}
125+
$input->setOption('description', $description);
118126

119-
$package = $input->getOption('package');
120-
if (!$package) {
121-
$package = $dialog->ask($output, $dialog->getQuestion('Package', 'Other'), 'Other');
122-
}
123-
$input->setOption('package', $package);
127+
$package = $input->getOption('package');
128+
if (!$package) {
129+
$package = $dialog->ask($output, $dialog->getQuestion('Package', 'Other'), 'Other');
124130
}
131+
$input->setOption('package', $package);
125132

126133
$core = $input->getOption('core');
127134
if (!$core) {
@@ -141,12 +148,6 @@ function ($module) {
141148
}
142149
$input->setOption('tests', $tests);
143150

144-
$setting = $input->getOption('setting');
145-
if (!$setting && $dialog->askConfirmation($output, $dialog->getQuestion('Do you want to generate a setting file', 'no', '?'), false)) {
146-
$setting = true;
147-
}
148-
$input->setOption('setting', $setting);
149-
150151
$structure = $input->getOption('structure');
151152
if (!$structure && $dialog->askConfirmation($output, $dialog->getQuestion('Do you want to generate the whole directory structure', 'yes', '?'), true)) {
152153
$structure = true;

src/Generator/CommandGenerator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public function generate($module, $command, $class_name, $container)
2828
];
2929

3030
$this->renderFile(
31-
'module/command.php.twig',
31+
'module/src/Command/command.php.twig',
3232
$this->getCommandPath($module).'/'.$class_name.'.php',
3333
$parameters
3434
);

src/Generator/ControllerGenerator.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,22 @@ public function generate($module, $class_name, $method_name, $route, $test, $ser
2222
);
2323

2424
$this->renderFile(
25-
'module/module.controller.php.twig',
25+
'module/src/Controller/controller.php.twig',
2626
$this->getControllerPath($module).'/'.$class_name.'.php',
2727
$parameters
2828
);
2929

3030
$this->renderFile(
31-
'module/controller-routing.yml.twig',
31+
'module/routing-controller.yml.twig',
3232
$this->getModulePath($module).'/'.$module.'.routing.yml',
3333
$parameters,
3434
FILE_APPEND
3535
);
3636

3737
if ($test) {
3838
$this->renderFile(
39-
'module/module.test.twig',
40-
$this->getTestPath($module).'/'.$class_name.'Test.php',
39+
'module/Tests/Controller/controller.php.twig',
40+
$this->getTestPath($module, 'Controller').'/'.$class_name.'Test.php',
4141
$parameters
4242
);
4343
}

0 commit comments

Comments
 (0)