in src/main/java/org/apache/sling/cli/impl/release/CreateJiraVersionCommand.java [70:128]
public Integer call() {
try {
StagingRepository repo = repositoryService.find(repositoryId);
for (Release release : repositoryService.getReleases(repo)) {
Version version = versionClient.find(release);
logger.info("Found {}.", version);
Version successorVersion = versionClient.findSuccessorVersion(release);
boolean createNextRelease = false;
if ( successorVersion == null ) {
Release next = release.next();
if (reusableCLIOptions.executionMode == ExecutionMode.DRY_RUN) {
logger.info("Version {} would be created.", next.getName());
} else if (reusableCLIOptions.executionMode == ExecutionMode.INTERACTIVE) {
InputOption answer = UserInput.yesNo(String.format("Should version %s be created?", next.getName()),
InputOption.YES);
createNextRelease = (answer == InputOption.YES);
} else if (reusableCLIOptions.executionMode == ExecutionMode.AUTO) {
createNextRelease = true;
}
if (createNextRelease) {
versionClient.create(next.getName());
logger.info("Created version {}", next.getName());
successorVersion = versionClient.findSuccessorVersion(release);
}
} else {
logger.info("Found successor {}.", successorVersion);
}
if (successorVersion != null) {
List<Issue> unresolvedIssues = versionClient.findUnresolvedIssues(release);
if (!unresolvedIssues.isEmpty()) {
boolean moveIssues = false;
if (reusableCLIOptions.executionMode == ExecutionMode.DRY_RUN) {
logger.info("{} unresolved issues would be moved from version {} to version {} :",
unresolvedIssues.size(), version.getName(), successorVersion.getName());
} else if (reusableCLIOptions.executionMode == ExecutionMode.INTERACTIVE) {
InputOption answer = UserInput.yesNo(String.format("Should the %s unresolved issue(s) from version %s be " +
"moved " +
"to version %s?", unresolvedIssues.size(), version.getName(), successorVersion.getName()),
InputOption.YES);
moveIssues = (answer == InputOption.YES);
} else if (reusableCLIOptions.executionMode == ExecutionMode.AUTO) {
moveIssues = true;
}
if (moveIssues) {
logger.info("Moving the following issues from {} to {}.", version.getName(), successorVersion.getName());
unresolvedIssues
.forEach(i -> logger.info("- {} : {}", i.getKey(), i.getSummary()));
versionClient.moveIssuesToNewVersion(version, successorVersion, unresolvedIssues);
logger.info("Done.");
}
}
}
}
} catch (IOException e) {
logger.warn("Failed executing command", e);
return CommandLine.ExitCode.SOFTWARE;
}
return CommandLine.ExitCode.OK;
}