protected function execute(InputInterface $input, OutputInterface $output)
{
/** @var \Gush\Application $application */
$application = $this->getApplication();
$config = $application->getConfig();
$valid = true;
$styleHelper = $this->getHelper('gush_style');
$adapters = $this->getAdapters();
$repositoryManagers = $adapters[0];
$issueTrackers = $adapters[1];
$repositoryManager = GitHelper::undefinedToDefault($input->getOption('repo-adapter'));
$issueTracker = GitHelper::undefinedToDefault($input->getOption('issue-adapter'));
$org = GitHelper::undefinedToDefault($input->getOption('org'));
$repo = GitHelper::undefinedToDefault($input->getOption('repo'));
$issueOrg = GitHelper::undefinedToDefault($input->getOption('issue-org'), $org);
$issueRepo = GitHelper::undefinedToDefault($input->getOption('issue-project'), $repo);
$this->validateAdapter($repositoryManager, $repositoryManagers, 'Repository-manager', $valid);
$this->validateAdapter($issueTracker, $issueTrackers, 'Issue-tracker', $valid);
if (!$valid) {
return self::COMMAND_FAILURE;
}
$this->checkAdapterConfigured($repositoryManager, $repositoryManagers[$repositoryManager], 'Repository-manager', $valid);
$this->checkAdapterConfigured($issueTracker, $issueTrackers[$issueTracker], 'Issue-tracker', $valid);
if (!$valid) {
if ($input->isInteractive() && $styleHelper->confirm('Would you like to configure the missing adapters now?')) {
$application->doRun(new ArrayInput(['command' => 'core:configure']), $output);
} else {
$styleHelper->note(['You cannot use the selected repository-manager and/or issue-tracker until its configured.', 'Run the "core:configure" command to configure the adapters.']);
}
}
$params = ['repo_adapter' => $repositoryManager, 'issue_tracker' => $issueTracker, 'repo_org' => $org, 'repo_name' => $repo, 'issue_project_org' => $issueOrg, 'issue_project_name' => $issueRepo];
$config->merge($params, Config::CONFIG_LOCAL);
ConfigFactory::dumpToFile($config, Config::CONFIG_LOCAL);
$styleHelper->success('Configuration file saved successfully.');
return self::COMMAND_SUCCESS;
}