/**
* Tag a new ZF2 LTS release.
*
* @param Route $route
* @param Console $console
* @return int
*/
public function __invoke(Route $route, Console $console)
{
$opts = $route->getMatches();
$minor = $opts['version'];
$patchfiles = $opts['patchfile'];
$this->verbose = $opts['verbose'] || $opts['v'];
$currentVersion = $this->detectVersion($minor, $console);
// checkout release-$minor branch based on release-$currentVersion
if (0 !== $this->exec(sprintf('%s checkout -b release-%s release-%s', $this->git, $minor, $currentVersion), $console)) {
$console->writeLine(sprintf('[ERROR] Could not create new branch release-%s based on tag release-%s!', $minor, $currentVersion), Color::WHITE, Color::RED);
return 1;
}
// apply patchfile
foreach ($patchfiles as $patchfile) {
if (0 !== $this->exec(sprintf('%s am < %s', $this->git, $patchfile), $console)) {
$console->writeLine(sprintf('[ERROR] Could not cleanly apply patchfile "%s"!', $patchfile), Color::WHITE, Color::RED);
return 1;
}
}
// Create message for release
$message = $this->getCommitMessages($currentVersion);
if (false === $message) {
$console->writeLine('[ERROR] Could not retrieve patch messages!', Color::WHITE, Color::RED);
return 1;
}
$nextVersion = $this->incrementVersion($currentVersion);
$message = sprintf("Zend Framework %s\n\n%s", $nextVersion, $message);
$console->writeLine('[DONE] Please verify the patch, and then execute:', Color::GREEN);
$console->writeLine(sprintf(' git tag -s -m "%s" release-%s', $message, $nextVersion));
}