protected function execute(InputInterface $input, OutputInterface $output)
{
/** @var FormatterHelper $formatter */
$formatter = $this->getHelper('formatter');
$configFile = $input->getArgument('file');
$repositoryUrl = $input->getArgument('url');
if (preg_match('{^https?://}i', $configFile)) {
$output->writeln('<error>Unable to write to remote file ' . $configFile . '</error>');
return 2;
}
$file = new JsonFile($configFile);
if (!$file->exists()) {
$output->writeln('<error>File not found: ' . $configFile . '</error>');
return 1;
}
if (!$this->isRepositoryValid($repositoryUrl)) {
$output->writeln('<error>Invalid Repository URL: ' . $repositoryUrl . '</error>');
return 3;
}
$config = $file->read();
if (!isset($config['repositories']) || !is_array($config['repositories'])) {
$config['repositories'] = [];
}
foreach ($config['repositories'] as $repository) {
if (isset($repository['url']) && $repository['url'] == $repositoryUrl) {
$output->writeln('<error>Repository already added to the file</error>');
return 4;
}
}
$config['repositories'][] = ['type' => 'vcs', 'url' => $repositoryUrl];
$file->write($config);
$output->writeln(['', $formatter->formatBlock('Your configuration file successfully updated! It\'s time to rebuild your repository', 'bg=blue;fg=white', true), '']);
return 0;
}