Fresh copy of releaser properties for each project in meta release; fixes gh-96
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
package org.springframework.cloud.release.internal.options;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
@@ -20,9 +20,18 @@ public class Options {
|
||||
this.metaRelease = metaRelease;
|
||||
this.fullRelease = fullRelease;
|
||||
this.interactive = interactive;
|
||||
this.taskNames = taskNames;
|
||||
this.startFrom = startFrom;
|
||||
this.range = range;
|
||||
this.taskNames = taskNames.stream()
|
||||
.map(this::removeQuotingChars).collect(
|
||||
Collectors.toList());
|
||||
this.startFrom = removeQuotingChars(startFrom);
|
||||
this.range = removeQuotingChars(range);
|
||||
}
|
||||
|
||||
private String removeQuotingChars(String string) {
|
||||
if (string.startsWith("'") && string.endsWith("'")) {
|
||||
return string.substring(1, string.length() - 1);
|
||||
}
|
||||
return string;
|
||||
}
|
||||
|
||||
@Override public String toString() {
|
||||
|
||||
@@ -7,7 +7,6 @@ import java.util.stream.Collectors;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.config.YamlMapFactoryBean;
|
||||
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
|
||||
import org.springframework.boot.context.properties.bind.Binder;
|
||||
import org.springframework.boot.context.properties.source.MapConfigurationPropertySource;
|
||||
@@ -31,6 +30,7 @@ class ReleaserPropertiesUpdater {
|
||||
|
||||
void updateProperties(ReleaserProperties properties, File clonedProjectFromOrg) {
|
||||
ReleaserProperties props = updatePropertiesFromFile(properties, clonedProjectFromOrg);
|
||||
log.info("Updated properties [\n\n{}\n\n]", props);
|
||||
updateProperties(props);
|
||||
}
|
||||
|
||||
@@ -64,6 +64,8 @@ class ReleaserPropertiesUpdater {
|
||||
catch (Exception e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
} else {
|
||||
log.info("No config/releaser.yml found. Will NOT update the current properties");
|
||||
}
|
||||
log.info("Updating working directory to [{}]", clonedProjectFromOrg.getAbsolutePath());
|
||||
copy.setWorkingDir(clonedProjectFromOrg.getAbsolutePath());
|
||||
|
||||
@@ -58,9 +58,8 @@ public class SpringReleaser {
|
||||
if (options.metaRelease) {
|
||||
log.info("Meta Release picked. Will iterate over all projects and perform release of each one");
|
||||
this.properties.getGit().setFetchVersionsFromGit(false);
|
||||
ReleaserProperties copy = clonePropertiesForProject();
|
||||
metaReleaseProjects(options)
|
||||
.forEach(project -> processProjectForMetaRelease(copy, options, project));
|
||||
.forEach(project -> processProjectForMetaRelease(clonePropertiesForProject(), options, project));
|
||||
} else {
|
||||
log.info("Single project release picked. Will release only the current project");
|
||||
File projectFolder = projectFolder();
|
||||
@@ -70,6 +69,7 @@ public class SpringReleaser {
|
||||
}
|
||||
|
||||
private void processProjectForMetaRelease(ReleaserProperties copy, Options options, String project) {
|
||||
log.info("Original properties [\n\n{}\n\n]", copy);
|
||||
File clonedProjectFromOrg = this.releaser.clonedProjectFromOrg(project);
|
||||
updatePropertiesIfCustomConfigPresent(copy, clonedProjectFromOrg);
|
||||
log.info("Successfully cloned the project [{}] to [{}]", project, clonedProjectFromOrg);
|
||||
@@ -103,7 +103,6 @@ public class SpringReleaser {
|
||||
log.info("List of all projects to clone before filtering {}", filteredProjects);
|
||||
if (StringUtils.hasText(options.startFrom)) {
|
||||
log.info("Start from option provided [{}]", options.startFrom);
|
||||
options.startFrom = removeQuotingChars(options.startFrom);
|
||||
int projectIndex = filteredProjects.indexOf(options.startFrom);
|
||||
if (projectIndex < 0) throw new IllegalStateException("Project [" + options.startFrom + "] not found");
|
||||
if (log.isDebugEnabled()) {
|
||||
@@ -113,11 +112,7 @@ public class SpringReleaser {
|
||||
options.startFrom = "";
|
||||
enforceFullRelease(options);
|
||||
} else if (!options.taskNames.isEmpty()) {
|
||||
log.info("Task names provided provided {}", options.taskNames);
|
||||
options.taskNames = new ArrayList<>(options.taskNames)
|
||||
.stream()
|
||||
.map(this::removeQuotingChars)
|
||||
.collect(Collectors.toList());
|
||||
log.info("Task names provided {}", options.taskNames);
|
||||
filteredProjects = filteredProjects.stream()
|
||||
.filter(project -> options.taskNames.contains(project))
|
||||
.collect(Collectors.toList());
|
||||
@@ -128,13 +123,6 @@ public class SpringReleaser {
|
||||
return filteredProjects;
|
||||
}
|
||||
|
||||
private String removeQuotingChars(String string) {
|
||||
if (string.startsWith("'") && string.endsWith("'")) {
|
||||
return string.substring(1, string.length() - 1);
|
||||
}
|
||||
return string;
|
||||
}
|
||||
|
||||
protected void enforceFullRelease(Options options) {
|
||||
options.fullRelease = true;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package org.springframework.cloud.release.internal.spring;
|
||||
|
||||
import edu.emory.mathcs.backport.java.util.Arrays;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@@ -251,6 +250,19 @@ public class OptionsProcessorTests {
|
||||
then(this.third.executed).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void should_remove_single_quotes() throws Exception {
|
||||
Options options = interactiveOpts().fullRelease(true)
|
||||
.range("'1-2'")
|
||||
.startFrom("'c'")
|
||||
.taskNames(Arrays.asList("'a'", "'b'"))
|
||||
.options();
|
||||
|
||||
then(options.range).isEqualTo("1-2");
|
||||
then(options.startFrom).isEqualTo("c");
|
||||
then(options.taskNames).containsOnly("a", "b");
|
||||
}
|
||||
|
||||
private OptionsBuilder interactiveOpts() {
|
||||
return new OptionsBuilder();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user