diff --git a/docs/src/main/asciidoc/spring-cloud-release-tools.adoc b/docs/src/main/asciidoc/spring-cloud-release-tools.adoc index 8a626b96..6706433e 100644 --- a/docs/src/main/asciidoc/spring-cloud-release-tools.adoc +++ b/docs/src/main/asciidoc/spring-cloud-release-tools.adoc @@ -142,7 +142,7 @@ You will see a help screen looking like more or less like this ---- Here you can find the list of tasks in order -[updatePoms,build,commit,deploy,docs,snapshots,push,closeMilestone,createTemplates,updateSagan,updateGuides,updateDocumentation] +[release,releaseVerbose,metaRelease,postRelease,updatePoms,build,commit,deploy,docs,snapshots,push,closeMilestone,updateSagan,createTemplates,updateGuides,updateDocumentation] Option Description @@ -154,12 +154,13 @@ Option Description -b, --build [String] Build the project -c, --commit [String] Commit, tag and push the tag -d, --deploy [String] Deploy the artifacts --f, --full-release [Boolean] Do you want to do the full release - (default: false) +-f, --full-release [Boolean] Do you want to do the full release of a + single project? (default: false) -g, --updateSagan [String] Updating Sagan with release info -h, --help [String] -i, --interactive Do you want to set the properties from - the command line (default: true) + the command line of a single project? + (default: true) -m, --closeMilestone [String] Close the milestone at Github -o, --docs [String] Publish the docs -p, --push [String] Push the commits @@ -172,10 +173,14 @@ Option Description -s, --snapshots [String] Go back to snapshots and bump originalVersion by patch -t, --createTemplates [String] Create email / blog / tweet etc. templates +--task-names, --tn Starts all release task for the given + task names -u, --updatePoms [String] Update poms with versions from Spring Cloud Release --ud, --updateDocumentation [String] Updating documentation repository --ug, --updateGuides [String] Updating Spring Guides +-x, --meta-release Do you want to do the meta release? + (default: false) Examples of usage: diff --git a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/OptionsParser.java b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/OptionsParser.java index 2dc02590..2aee3046 100644 --- a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/OptionsParser.java +++ b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/OptionsParser.java @@ -43,6 +43,10 @@ class OptionsParser implements Parser { .acceptsAll(Arrays.asList("a", "start-from"), "Starts all release task starting from the given task. Requires passing the task name (either one letter or the full name)") .withRequiredArg().ofType(String.class); + ArgumentAcceptingOptionSpec taskNamesOpt = parser + .acceptsAll(Arrays.asList("tn", "task-names"), + "Starts all release task for the given task names") + .withRequiredArg().ofType(String.class); ArgumentAcceptingOptionSpec rangeOpt = parser.acceptsAll(Arrays.asList("r", "range"), "Runs release tasks from the given range. Requires passing the task names with a hyphen. The first task is inclusive, the second inclusive. E.g. 's-m' would mean running 'snapshot', 'push' and 'milestone' tasks") .withRequiredArg().ofType(String.class); @@ -56,8 +60,16 @@ class OptionsParser implements Parser { Boolean metaRelease = options.valueOf(metaReleaseOpt); Boolean interactive = options.valueOf(interactiveOpt); Boolean fullRelease = options.has(fullReleaseOpt); - List taskNames = Tasks.NON_COMPOSITE_TASKS.stream() - .filter(task -> options.has(task.name)).map(task -> task.name) + List providedTaskNames = Arrays + .asList(options.valueOf(taskNamesOpt).split(",")); + List allTaskNames = Tasks.NON_COMPOSITE_TASKS.stream() + .map(task -> task.name) + .collect(Collectors.toList()); + if (providedTaskNames.isEmpty()) { + providedTaskNames.addAll(allTaskNames); + } + List taskNames = allTaskNames.stream() + .filter(providedTaskNames::contains) .collect(Collectors.toList()); String startFrom = options.valueOf(startFromOpt); String range = options.valueOf(rangeOpt); diff --git a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/Tasks.java b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/Tasks.java index efcc06e5..9bf404f6 100644 --- a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/Tasks.java +++ b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/Tasks.java @@ -101,16 +101,16 @@ class Tasks { "FULL RELEASE", "Perform a full release of this project without interruptions", args -> DEFAULT_TASKS_PER_PROJECT.forEach(task -> task.execute(args))); - static Task POST_RELEASE = Tasks.task("post-release", "pr", + static Task POST_RELEASE = Tasks.task("postRelease", "pr", "POST RELEASE TASKS", "Perform post release tasks for this release without interruptions", args -> DEFAULT_TASKS_PER_RELEASE.forEach(task -> task.execute(args)), TaskType.POST_RELEASE); - static Task RELEASE_VERBOSE = Tasks.task("release-verbose", "r", + static Task RELEASE_VERBOSE = Tasks.task("releaseVerbose", "r", "FULL VERBOSE RELEASE", "Perform a full release of this project in interactive mode (you'll be asked about skipping steps)", args -> DEFAULT_TASKS_PER_PROJECT.forEach(task -> task.execute(args))); - static Task META_RELEASE = Tasks.task("meta-release", "x", + static Task META_RELEASE = Tasks.task("metaRelease", "x", "META RELEASE", "Perform a meta release of projects", args -> DEFAULT_TASKS_PER_PROJECT.forEach(task -> { @@ -121,7 +121,8 @@ class Tasks { static final List COMPOSITE_TASKS = Stream.of( RELEASE, RELEASE_VERBOSE, - META_RELEASE + META_RELEASE, + POST_RELEASE ).collect(Collectors.toList()); static final List ALL_TASKS_PER_PROJECT = Stream.of( diff --git a/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/AcceptanceTests.java b/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/AcceptanceTests.java index d2d54317..31e54acb 100644 --- a/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/AcceptanceTests.java +++ b/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/AcceptanceTests.java @@ -517,7 +517,7 @@ public class AcceptanceTests { Releaser releaser = defaultReleaser(expectedVersion, projectName, properties); return new SpringReleaser(releaser, properties, new OptionsProcessor(releaser, properties) { @Override String chosenOption() { - return "12"; + return "13"; } @Override void postReleaseOptions(Options options, Args defaultArgs) {