protected function execute(InputInterface $input, OutputInterface $output)
{
$projectName = $input->getArgument('name');
$testFramework = $input->getOption('test');
$testingFramework = $input->getOption('test-framework');
if ($testingFramework !== Defaults::TEST_FRAMEWORK) {
$testFramework = $testingFramework;
}
$license = $input->getOption('license');
$namespace = $input->getOption('namespace');
$git = $input->getOption('git');
$phpcs = $input->getOption('phpcs');
$keywords = $input->getOption('keywords');
$vagrant = $input->getOption('vagrant');
$editorConfig = $input->getOption('editor-config');
$phpVersion = $input->getOption('php');
$environment = $input->getOption('env');
$lgtm = $input->getOption('lgtm');
$githubTemplates = $input->getOption('github-templates');
$githubDocs = $input->getOption('github-docs');
$github = $input->getOption('github');
$codeOfConduct = $input->getOption('code-of-conduct');
$ignoreDefaultConfiguration = $input->getOption('ignore-default-config');
$configuration = $input->getOption('config');
if ($this->isConfigurationApplicable($configuration) && $ignoreDefaultConfiguration === false) {
$this->settings = Configuration::getSettings($configuration, $projectName, $keywords, $this->filesystem);
} else {
if ($github) {
$githubTemplates = $githubDocs = true;
}
$this->settings = new Settings($projectName, $testFramework, $license, $namespace, $git, $phpcs, $keywords, $vagrant, $editorConfig, $phpVersion, $environment, $lgtm, $githubTemplates, $codeOfConduct, $githubDocs);
}
if (!$this->str->isValid($projectName)) {
$warningMessage = '<error>Warning: "' . $projectName . '" is not ' . 'a valid project name, please use "vendor/project"</error>';
$output->writeln($warningMessage);
return false;
}
$this->warnAndOverwriteInvalidSettingsWithDefaults($output);
$this->construct->generate($this->settings, new Git(), new Script());
$this->initializedGitMessage($output);
$this->bootstrappedCodeceptionMessage($testFramework, $output);
$this->initializedBehatMessage($testFramework, $output);
$output->writeln('<info>Project "' . $projectName . '" constructed.</info>');
}