Gush\Command\Core\InitCommand::execute PHP Method

execute() protected method

protected execute ( Symfony\Component\Console\Input\InputInterface $input, Symfony\Component\Console\Output\OutputInterface $output )
$input Symfony\Component\Console\Input\InputInterface
$output Symfony\Component\Console\Output\OutputInterface
    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;
    }