Fixed blog post parsing and not failing the build on templates

This commit is contained in:
Marcin Grzejszczak
2018-10-23 22:11:34 +02:00
parent 241731c6fc
commit c30d987bfc
8 changed files with 52 additions and 43 deletions

View File

@@ -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 {

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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;
}
}
}

View File

@@ -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"));
}
}

View File

@@ -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());
}

View File

@@ -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",