Fixed blog post parsing and not failing the build on templates
This commit is contained in:
@@ -131,14 +131,14 @@ public class Releaser {
|
||||
log.info("\nSuccessfully closed milestone");
|
||||
}
|
||||
|
||||
public void createEmail(ProjectVersion releaseVersion) {
|
||||
public void createEmail(ProjectVersion releaseVersion, Projects projects) {
|
||||
Assert.notNull(releaseVersion, "You must provide a release version for your project");
|
||||
Assert.notNull(releaseVersion.version, "You must provide a release version for your project");
|
||||
if (releaseVersion.isSnapshot()) {
|
||||
log.info("\nWon't create email template for a SNAPSHOT version");
|
||||
return;
|
||||
}
|
||||
File email = this.templateGenerator.email();
|
||||
File email = this.templateGenerator.email(projects);
|
||||
if (email != null) {
|
||||
log.info("\nSuccessfully created email template at location [{}]", email);
|
||||
} else {
|
||||
@@ -169,12 +169,12 @@ public class Releaser {
|
||||
log.info("\nSuccessfully updated Spring Guides issues");
|
||||
}
|
||||
|
||||
public void createTweet(ProjectVersion releaseVersion) {
|
||||
public void createTweet(ProjectVersion releaseVersion, Projects projects) {
|
||||
if (releaseVersion.isSnapshot()) {
|
||||
log.info("\nWon't create tweet template for a SNAPSHOT version");
|
||||
return;
|
||||
}
|
||||
File tweet = this.templateGenerator.tweet();
|
||||
File tweet = this.templateGenerator.tweet(projects);
|
||||
if (tweet != null) {
|
||||
log.info("\nSuccessfully created tweet template at location [{}]", tweet);
|
||||
} else {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package org.springframework.cloud.release.internal.template;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
@@ -10,13 +9,14 @@ import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.github.jknack.handlebars.Template;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.cloud.release.internal.pom.Projects;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import com.github.jknack.handlebars.Template;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
*/
|
||||
@@ -66,7 +66,7 @@ class BlogTemplateGenerator {
|
||||
Files.write(this.blogOutput.toPath(), blog.getBytes());
|
||||
return this.blogOutput;
|
||||
}
|
||||
catch (IOException e) {
|
||||
catch (Exception e) {
|
||||
log.warn("Exception occurred while trying to create a blog entry", e);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package org.springframework.cloud.release.internal.template;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
|
||||
import com.github.jknack.handlebars.Template;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.github.jknack.handlebars.Template;
|
||||
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
*/
|
||||
@@ -31,7 +31,7 @@ class EmailTemplateGenerator {
|
||||
Files.write(this.emailOutput.toPath(), email.getBytes());
|
||||
return this.emailOutput;
|
||||
}
|
||||
catch (IOException e) {
|
||||
catch (Exception e) {
|
||||
log.warn("Exception occurred while trying to generate an email template", e);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
package org.springframework.cloud.release.internal.template;
|
||||
|
||||
import com.github.jknack.handlebars.Handlebars;
|
||||
import com.github.jknack.handlebars.Template;
|
||||
import com.github.jknack.handlebars.helper.StringHelpers;
|
||||
import com.github.jknack.handlebars.io.ClassPathTemplateLoader;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
@@ -14,6 +9,8 @@ import org.springframework.cloud.release.internal.git.ProjectGitHandler;
|
||||
import org.springframework.cloud.release.internal.pom.Projects;
|
||||
import org.springframework.cloud.release.internal.tech.HandlebarsHelper;
|
||||
|
||||
import com.github.jknack.handlebars.Template;
|
||||
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
*/
|
||||
@@ -48,9 +45,9 @@ public class TemplateGenerator implements ReleaserPropertiesAware {
|
||||
this.handler = handler;
|
||||
}
|
||||
|
||||
public File email() {
|
||||
public File email(Projects projects) {
|
||||
File emailOutput = file(this.emailOutput);
|
||||
String releaseVersion = parsedVersion();
|
||||
String releaseVersion = parsedVersion(projects);
|
||||
Template template = template(EMAIL_TEMPLATE);
|
||||
return new EmailTemplateGenerator(template, releaseVersion, emailOutput).email();
|
||||
}
|
||||
@@ -73,27 +70,30 @@ public class TemplateGenerator implements ReleaserPropertiesAware {
|
||||
|
||||
public File blog(Projects projects) {
|
||||
File blogOutput = file(this.blogOutput);
|
||||
String releaseVersion = parsedVersion();
|
||||
String releaseVersion = parsedVersion(projects);
|
||||
Template template = template(BLOG_TEMPLATE);
|
||||
return new BlogTemplateGenerator(template, releaseVersion, blogOutput, projects).blog();
|
||||
}
|
||||
|
||||
public File tweet() {
|
||||
public File tweet(Projects projects) {
|
||||
File output = file(this.tweetOutput);
|
||||
String releaseVersion = parsedVersion();
|
||||
String releaseVersion = parsedVersion(projects);
|
||||
Template template = template(TWITTER_TEMPLATE);
|
||||
return new TwitterTemplateGenerator(template, releaseVersion, output).tweet();
|
||||
}
|
||||
|
||||
public File releaseNotes(Projects projects) {
|
||||
File output = file(this.releaseNotesOutput);
|
||||
String releaseVersion = parsedVersion();
|
||||
String releaseVersion = parsedVersion(projects);
|
||||
Template template = template(RELEASE_NOTES_TEMPLATE);
|
||||
return new ReleaseNotesTemplateGenerator(template, releaseVersion,
|
||||
output, projects, this.handler).releseNotes();
|
||||
}
|
||||
|
||||
private String parsedVersion() {
|
||||
private String parsedVersion(Projects projects) {
|
||||
if (this.props.getMetaRelease().isEnabled()) {
|
||||
return projects.forName(this.props.getMetaRelease().getReleaseTrainProjectName()).version;
|
||||
}
|
||||
String version = this.props.getPom().getBranch();
|
||||
if (version.startsWith("v")) {
|
||||
return version.substring(1);
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
package org.springframework.cloud.release.internal.template;
|
||||
|
||||
import com.github.jknack.handlebars.Template;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.github.jknack.handlebars.Template;
|
||||
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
*/
|
||||
class TwitterTemplateGenerator {
|
||||
private static final Logger log = LoggerFactory.getLogger(TwitterTemplateGenerator.class);
|
||||
|
||||
private final Template template;
|
||||
private final String releaseVersion;
|
||||
private final File output;
|
||||
@@ -26,8 +30,9 @@ class TwitterTemplateGenerator {
|
||||
Files.write(this.output.toPath(), tweet.getBytes());
|
||||
return this.output;
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw new IllegalStateException(e);
|
||||
catch (Exception e) {
|
||||
log.warn("Exception occurred while trying to generate a twitter template", e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
package org.springframework.cloud.release.internal;
|
||||
|
||||
import static org.mockito.BDDMockito.then;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Mockito.never;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
@@ -28,6 +24,10 @@ import org.springframework.cloud.release.internal.project.ProjectBuilder;
|
||||
import org.springframework.cloud.release.internal.sagan.SaganUpdater;
|
||||
import org.springframework.cloud.release.internal.template.TemplateGenerator;
|
||||
|
||||
import static org.mockito.BDDMockito.then;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Mockito.never;
|
||||
|
||||
/**
|
||||
* @author Marcin Grzejszczak
|
||||
*/
|
||||
@@ -106,16 +106,16 @@ public class ReleaserTests {
|
||||
|
||||
@Test
|
||||
public void should_not_generate_email_for_snapshot_version() throws Exception {
|
||||
releaser().createEmail(new ProjectVersion("original", "1.0.0.BUILD-SNAPSHOT"));
|
||||
releaser().createEmail(new ProjectVersion("original", "1.0.0.BUILD-SNAPSHOT"), projects());
|
||||
|
||||
then(this.templateGenerator).should(never()).email();
|
||||
then(this.templateGenerator).should(never()).email(any(Projects.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void should_generate_email_for_release_version() throws Exception {
|
||||
releaser().createEmail(new ProjectVersion("original", "1.0.0.RELEASE"));
|
||||
releaser().createEmail(new ProjectVersion("original", "1.0.0.RELEASE"), projects());
|
||||
|
||||
then(this.templateGenerator).should().email();
|
||||
then(this.templateGenerator).should().email(any(Projects.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -135,4 +135,8 @@ public class ReleaserTests {
|
||||
then(this.projectGitHandler).should(never()).revertChangesIfApplicable(any(File.class), any(ProjectVersion.class));
|
||||
}
|
||||
|
||||
Projects projects() {
|
||||
return new Projects(new ProjectVersion("foo", "1.0.0.RELEASE"));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -25,7 +25,7 @@ public class TemplateGeneratorTests {
|
||||
public void should_generate_email_from_template_for_tag_with_v_prefix() {
|
||||
this.props.getPom().setBranch("vDalston.RELEASE");
|
||||
|
||||
File generatedMail = new TemplateGenerator(this.props, this.handler).email();
|
||||
File generatedMail = new TemplateGenerator(this.props, this.handler).email(new Projects());
|
||||
|
||||
then(generatedMail).hasContent(expectedEmail());
|
||||
}
|
||||
@@ -35,7 +35,7 @@ public class TemplateGeneratorTests {
|
||||
this.props.getPom().setBranch("vDalston.RELEASE");
|
||||
|
||||
File generatedMail = new TemplateGenerator(this.props, new File("target/foo/bar/baz/template.txt"),
|
||||
handler).email();
|
||||
handler).email(new Projects());
|
||||
|
||||
then(generatedMail).hasContent(expectedEmail());
|
||||
}
|
||||
@@ -44,7 +44,7 @@ public class TemplateGeneratorTests {
|
||||
public void should_generate_email_from_template_for_tag_without_v_prefix() {
|
||||
this.props.getPom().setBranch("Dalston.RELEASE");
|
||||
|
||||
File generatedMail = new TemplateGenerator(this.props, this.handler).email();
|
||||
File generatedMail = new TemplateGenerator(this.props, this.handler).email(new Projects());
|
||||
|
||||
then(generatedMail).hasContent(expectedEmail());
|
||||
}
|
||||
@@ -53,7 +53,7 @@ public class TemplateGeneratorTests {
|
||||
public void should_generate_tweet_from_template_for_tag_with_v_prefix() {
|
||||
this.props.getPom().setBranch("vDalston.RELEASE");
|
||||
|
||||
File generatedTweet = new TemplateGenerator(this.props, this.handler).tweet();
|
||||
File generatedTweet = new TemplateGenerator(this.props, this.handler).tweet(new Projects());
|
||||
|
||||
then(generatedTweet).hasContent(expectedTweet());
|
||||
}
|
||||
@@ -62,7 +62,7 @@ public class TemplateGeneratorTests {
|
||||
public void should_generate_tweet_from_template_for_tag_without_v_prefix() {
|
||||
this.props.getPom().setBranch("Dalston.RELEASE");
|
||||
|
||||
File generatedTweet = new TemplateGenerator(this.props, this.handler).tweet();
|
||||
File generatedTweet = new TemplateGenerator(this.props, this.handler).tweet(new Projects());
|
||||
|
||||
then(generatedTweet).hasContent(expectedTweet());
|
||||
}
|
||||
|
||||
@@ -48,9 +48,9 @@ class Tasks {
|
||||
"CREATING TEMPLATES",
|
||||
"Create email / blog / tweet etc. templates",
|
||||
args -> {
|
||||
args.releaser.createEmail(args.versionFromScRelease);
|
||||
args.releaser.createEmail(args.versionFromScRelease, args.projects);
|
||||
args.releaser.createBlog(args.versionFromScRelease, args.projects);
|
||||
args.releaser.createTweet(args.versionFromScRelease);
|
||||
args.releaser.createTweet(args.versionFromScRelease, args.projects);
|
||||
args.releaser.createReleaseNotes(args.versionFromScRelease, args.projects);
|
||||
},TaskType.POST_RELEASE);
|
||||
static Task UPDATE_GUIDES = task("updateGuides", "ug",
|
||||
|
||||
Reference in New Issue
Block a user