Repository navigation
Expand file tree
/
Copy pathBuild.php
More file actions
54 lines (44 loc) · 1.85 KB
/
Copy pathBuild.php
File metadata and controls
54 lines (44 loc) · 1.85 KB
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
<?php
namespace Codeception\Command;
use Codeception\Lib\Generator\Actor as GuyGenerator;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Yaml\Yaml;
use \Symfony\Component\Console\Helper\DialogHelper;
/**
* Generates Actor classes (initially Guy classes) from suite configs.
* Starting from Codeception 2.0 actor classes are auto-generated. Use this command to generate them manually.
*
* `codecept build`
* `codecept build path/to/project`
*
*/
class Build extends Base
{
protected $inheritedMethodTemplate = ' * @method void %s(%s)';
public function getDescription() {
return 'Generates base classes for all suites';
}
protected function configure()
{
$this->setDefinition(array(
new InputOption('config', 'c', InputOption::VALUE_OPTIONAL, 'Use custom path for config'),
));
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$suites = $this->getSuites($input->getOption('config'));
$output->writeln("<info>Building Guy classes for suites: ".implode(', ', $suites).'</info>');
foreach ($suites as $suite) {
$settings = $this->getSuiteConfig($suite, $input->getOption('config'));
$gen = new GuyGenerator($settings);
$output->writeln('<info>'.$gen->getGuy() . "</info> includes modules: ".implode(', ',$gen->getModules()));
$contents = $gen->produce();
$file = $settings['path'].$this->getClassName($settings['class_name']).'.php';
$this->save($file, $contents, true);
$output->writeln("{$settings['class_name']}.php generated successfully. ".$gen->getNumMethods()." methods added");
}
}
}