protected function execute(InputInterface $input, OutputInterface $output)
{
$pr = $this->getAdapter()->getPullRequest($input->getArgument('pr_number'));
$sourceOrg = $pr['head']['user'];
$branchName = $pr['head']['ref'];
/** @var GitConfigHelper $gitConfigHelper */
$gitConfigHelper = $this->getHelper('git_config');
$gitConfigHelper->ensureRemoteExists($sourceOrg, $pr['head']['repo']);
/** @var GitHelper $gitHelper */
$gitHelper = $this->getHelper('git');
$gitHelper->remoteUpdate($sourceOrg);
$lastTag = $gitHelper->getLastTagOnBranch($sourceOrg . '/' . $branchName);
if (empty($lastTag)) {
$lastTag = '0.0.0';
}
// adjust case for format v2.3
$lastTag = ltrim($lastTag, 'v');
$builder = Parser::toBuilder($lastTag);
switch (true) {
case $input->getOption('major'):
$builder->incrementMajor();
break;
case $input->getOption('minor'):
$builder->incrementMinor();
break;
case $input->getOption('patch'):
$builder->incrementPatch();
break;
default:
$builder->incrementPatch();
break;
}
$output->writeln(Dumper::toString($builder->getVersion()));
return self::COMMAND_SUCCESS;
}