1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
namespace Codeception\Command;
use Codeception\Configuration;
use Codeception\Lib\Generator\Group as GroupGenerator;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
/**
* Creates empty GroupObject - extension which handles all group events.
*
* * `codecept g:group Admin`
*/
class GenerateGroup extends Command
{
use Shared\FileSystem;
use Shared\Config;
protected function configure()
{
$this->setDefinition([
new InputArgument('group', InputArgument::REQUIRED, 'Group class name'),
]);
}
public function getDescription()
{
return 'Generates Group subscriber';
}
public function execute(InputInterface $input, OutputInterface $output)
{
$config = $this->getGlobalConfig();
$group = $input->getArgument('group');
$class = ucfirst($group);
$path = $this->createDirectoryFor(Configuration::supportDir() . 'Group' . DIRECTORY_SEPARATOR, $class);
$filename = $path . $class . '.php';
$gen = new GroupGenerator($config, $group);
$res = $this->createFile($filename, $gen->produce());
if (!$res) {
$output->writeln("<error>Group $filename already exists</error>");
return;
}
$output->writeln("<info>Group extension was created in $filename</info>");
$output->writeln(
'To use this group extension, include it to "extensions" option of global Codeception config.'
);
}
}