Skip to content

Commit 051d61c

Browse files
committed
fix: adding default changelog template jenkinsci/git-changelog-plugin#58
1 parent ecc3815 commit 051d61c

22 files changed

+92
-47
lines changed

src/main/java/se/bjurr/gitchangelog/api/GitChangelogApi.java

+3-27
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,11 @@
1313
import com.github.jknack.handlebars.Helper;
1414
import com.github.jknack.handlebars.Template;
1515
import java.io.File;
16-
import java.io.FileNotFoundException;
1716
import java.io.IOException;
1817
import java.io.StringWriter;
1918
import java.io.Writer;
20-
import java.net.URISyntaxException;
2119
import java.net.URL;
22-
import java.nio.charset.StandardCharsets;
2320
import java.nio.file.Files;
24-
import java.nio.file.Path;
25-
import java.nio.file.Paths;
2621
import java.text.SimpleDateFormat;
2722
import java.util.Date;
2823
import java.util.List;
@@ -47,6 +42,7 @@
4742
import se.bjurr.gitchangelog.internal.semantic.SemanticVersioning;
4843
import se.bjurr.gitchangelog.internal.settings.Settings;
4944
import se.bjurr.gitchangelog.internal.settings.SettingsIssue;
45+
import se.bjurr.gitchangelog.internal.util.ResourceLoader;
5046

5147
public class GitChangelogApi {
5248

@@ -127,28 +123,8 @@ public String getTemplateString() {
127123
if (this.templateContent != null) {
128124
return this.templateContent;
129125
}
130-
String templateString = null;
131-
try {
132-
byte[] templateBytes = null;
133-
final Path templatePath = Paths.get(this.settings.getTemplatePath());
134-
if (templatePath.toFile().exists()) {
135-
templateBytes = Files.readAllBytes(templatePath);
136-
} else {
137-
URL templateUrl = GitChangelogApi.class.getResource(this.settings.getTemplatePath());
138-
if (templateUrl == null) {
139-
templateUrl = GitChangelogApi.class.getResource("/" + this.settings.getTemplatePath());
140-
if (templateUrl == null) {
141-
throw new FileNotFoundException(
142-
"Was unable to find file, or resouce, \"" + this.settings.getTemplatePath() + "\"");
143-
}
144-
}
145-
templateBytes = Files.readAllBytes(Paths.get(templateUrl.toURI()));
146-
templateString = new String(templateBytes, StandardCharsets.UTF_8);
147-
}
148-
} catch (final IOException | URISyntaxException e) {
149-
throw new RuntimeException(this.settings.getTemplatePath(), e);
150-
}
151-
return templateString;
126+
final String resourceName = this.settings.getTemplatePath();
127+
return ResourceLoader.getResourceOrFile(resourceName);
152128
}
153129

154130
static boolean shouldUseIntegrationIfConfigured(final String templateContent) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package se.bjurr.gitchangelog.internal.util;
2+
3+
import java.io.BufferedReader;
4+
import java.io.FileNotFoundException;
5+
import java.io.IOException;
6+
import java.io.InputStream;
7+
import java.io.InputStreamReader;
8+
import java.nio.charset.StandardCharsets;
9+
import java.nio.file.Files;
10+
import java.nio.file.Path;
11+
import java.nio.file.Paths;
12+
import java.util.stream.Collectors;
13+
14+
public final class ResourceLoader {
15+
private ResourceLoader() {}
16+
17+
public static String getResourceOrFile(final String resourceName) {
18+
19+
String templateString = null;
20+
try {
21+
final Path templatePath = Paths.get(resourceName);
22+
if (templatePath.toFile().exists()) {
23+
24+
Files.readAllBytes(templatePath);
25+
} else {
26+
InputStream inputStream =
27+
getResourceFromClassLoader(resourceName, ResourceLoader.class.getClassLoader());
28+
if (inputStream == null) {
29+
inputStream =
30+
getResourceFromClassLoader(
31+
resourceName, Thread.currentThread().getContextClassLoader());
32+
}
33+
34+
if (inputStream == null) {
35+
throw new FileNotFoundException(
36+
"Was unable to find file, or resouce, \"" + resourceName + "\"");
37+
}
38+
templateString =
39+
new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8))
40+
.lines()
41+
.collect(Collectors.joining("\n"));
42+
}
43+
} catch (final IOException e) {
44+
throw new RuntimeException(resourceName, e);
45+
}
46+
return templateString;
47+
}
48+
49+
private static InputStream getResourceFromClassLoader(
50+
final String resourceName, final ClassLoader classLoader) {
51+
InputStream inputStream = classLoader.getResourceAsStream(resourceName);
52+
if (inputStream == null) {
53+
inputStream = classLoader.getResourceAsStream("/" + resourceName);
54+
}
55+
return inputStream;
56+
}
57+
}

src/main/resources/changelog.mustache

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Changelog
2+
3+
Changelog for {{ownerName}} {{repoName}}.
4+
5+
{{#tags}}
6+
## {{name}}
7+
{{#issues}}
8+
{{#hasIssue}}
9+
{{#hasLink}}
10+
### {{name}} [{{issue}}]({{link}}) {{title}} {{#hasIssueType}} *{{issueType}}* {{/hasIssueType}} {{#hasLabels}} {{#labels}} *{{.}}* {{/labels}} {{/hasLabels}}
11+
{{/hasLink}}
12+
{{^hasLink}}
13+
### {{name}} {{issue}} {{title}} {{#hasIssueType}} *{{issueType}}* {{/hasIssueType}} {{#hasLabels}} {{#labels}} *{{.}}* {{/labels}} {{/hasLabels}}
14+
{{/hasLink}}
15+
{{/hasIssue}}
16+
{{^hasIssue}}
17+
### {{name}}
18+
{{/hasIssue}}
19+
20+
{{#commits}}
21+
**{{{messageTitle}}}**
22+
23+
{{#messageBodyItems}}
24+
* {{.}}
25+
{{/messageBodyItems}}
26+
27+
[{{hash}}](https://github.com/{{ownerName}}/{{repoName}}/commit/{{hash}}) {{authorName}} *{{commitTime}}*
28+
29+
{{/commits}}
30+
31+
{{/issues}}
32+
{{/tags}}

src/test/java/se/bjurr/gitchangelog/api/GitChangelogApiTest.testPathFilterCanBeSpecified.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ Extended variable: {{customVariable}}
1010
* {{authorName}}
1111
{{/authors}}
1212

13-
1413
---------------------------------------------
1514

1615
settings:

src/test/java/se/bjurr/gitchangelog/api/GitChangelogApiTest.testThatCommitsWithoutIssueCanBeIgnoredIssuesCommits.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ Changelog of Git Changelog.
2121
{{/commits}}
2222
{{/issues}}
2323

24-
2524
---------------------------------------------
2625

2726
settings:

src/test/java/se/bjurr/gitchangelog/api/GitChangelogApiTest.testThatCustomVariablesCanBeUsed.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ Extended variable: {{customVariable}}
1010
* {{authorName}}
1111
{{/authors}}
1212

13-
1413
---------------------------------------------
1514

1615
settings:

src/test/java/se/bjurr/gitchangelog/api/GitChangelogApiTest.testThatIssuesCanBeRemoved.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ Changelog of Git Changelog.
2121
{{/commits}}
2222
{{/issues}}
2323

24-
2524
---------------------------------------------
2625

2726
settings:

src/test/java/se/bjurr/gitchangelog/api/GitChangelogApiTest.testThatReadableGroupCanBeSet.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ Changelog of Git Changelog.
2121
{{/commits}}
2222
{{/issues}}
2323

24-
2524
---------------------------------------------
2625

2726
settings:

src/test/java/se/bjurr/gitchangelog/api/GitChangelogApiTest.testThatRevertedCommitsAreRemoved.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ Changelog of Git Changelog.
1212

1313
{{/commits}}
1414

15-
1615
---------------------------------------------
1716

1817
settings:

src/test/java/se/bjurr/gitchangelog/api/GitChangelogApiTest.testThatTagsThatAreEmptyAfterCommitsHaveBeenIgnoredAreRemoved.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ Extended variable: {{customVariable}}
1010
* {{authorName}}
1111
{{/authors}}
1212

13-
1413
---------------------------------------------
1514

1615
settings:

src/test/java/se/bjurr/gitchangelog/api/TemplatesTest.testAuthorsCommits.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ Changelog of Git Changelog.
1616

1717
{{/authors}}
1818

19-
2019
---------------------------------------------
2120

2221
settings:

src/test/java/se/bjurr/gitchangelog/api/TemplatesTest.testCommits.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ Changelog of Git Changelog.
1212

1313
{{/commits}}
1414

15-
1615
---------------------------------------------
1716

1817
settings:

src/test/java/se/bjurr/gitchangelog/api/TemplatesTest.testCommitsVariables.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ Changelog of Git Changelog.
1919

2020
{{/commits}}
2121

22-
2322
---------------------------------------------
2423

2524
settings:

src/test/java/se/bjurr/gitchangelog/api/TemplatesTest.testIssueLabels.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ template:
1010
{{/issues}}
1111
{{/tags}}
1212

13-
1413
---------------------------------------------
1514

1615
settings:

src/test/java/se/bjurr/gitchangelog/api/TemplatesTest.testIssueLinkedIssues.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ template:
66
{{/hasLinkedIssues}}
77
{{/issues}}
88

9-
109
---------------------------------------------
1110

1211
settings:

src/test/java/se/bjurr/gitchangelog/api/TemplatesTest.testIssueTitles.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ template:
44
{{name}} {{title}}
55
{{/issues}}
66

7-
87
---------------------------------------------
98

109
settings:

src/test/java/se/bjurr/gitchangelog/api/TemplatesTest.testIssueType.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ isNoIssue: {{isNoIssue}}
1515
{{/issues}}
1616
{{/tags}}
1717

18-
1918
---------------------------------------------
2019

2120
settings:

src/test/java/se/bjurr/gitchangelog/api/TemplatesTest.testIssuesCommits.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ Changelog of Git Changelog.
2121
{{/commits}}
2222
{{/issues}}
2323

24-
2524
---------------------------------------------
2625

2726
settings:

src/test/java/se/bjurr/gitchangelog/api/TemplatesTest.testTagsCommits.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ Changelog of Git Changelog.
1616
{{/commits}}
1717
{{/tags}}
1818

19-
2019
---------------------------------------------
2120

2221
settings:

src/test/java/se/bjurr/gitchangelog/api/TemplatesTest.testThatIgnoreCommitsIfMessageMatchesCanBeEmptyToDisableTheFeature.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ template:
99
{{/merge}}
1010
{{/commits}}
1111

12-
1312
---------------------------------------------
1413

1514
settings:

src/test/java/se/bjurr/gitchangelog/api/helpers/HandlebarsHelperTest.testThatBuiltInHelperMethodsCanBeUsed.approved.txt

-2
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@ Has paragraphs: {{hash}}
128128

129129

130130

131-
132131
---------------------------------------------
133132

134133
settings:
@@ -653,7 +652,6 @@ This reverts commit 1edc0d71eccce51abfb5f62fdddfbe73913785f5.
653652

654653

655654

656-
657655
---------------------------------------------
658656

659657
context:

src/test/java/se/bjurr/gitchangelog/api/helpers/HandlebarsHelperTest.testThatHelperCanBeSuppliedWithJavascript.approved.txt

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ template:
1111

1212
{{/commits}}
1313

14-
1514
---------------------------------------------
1615

1716
settings:

0 commit comments

Comments
 (0)