diff --git a/docs/README.md b/docs/README.md index 3e558ef..e81fb9b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -213,6 +213,10 @@ or by setting corresponding system property. | analyzer | specification-name | | `Conventional` | [Conventional|Gitmoji] | Commit message analyzer specification | | changelog | renderer-name | | `Markup` | [Markup|Html] | Changelog renderer | | | template | | `changelog` | | Changelog template | +| | renderIssueLinks | | `true` | [true|false] | Generate issue links | +| | renderCommitLinks | | `true` | [true|false] | Generate commit links | +| | renderReleaseLinks | | `true` | [true|false] | Generate release links | +| | renderBody | | `false` | [true|false] | Include commit message body | | release | publisher-name | | `GitHub` | [Github|Gitlab] | Release publisher | | | publish | | `false` | [true|false] | publish release to remote | | | username | | | | | diff --git a/semver-analyzer-conventional/src/main/java/io/github/sam42r/semver/analyzer/ConventionalCommitAnalyzer.java b/semver-analyzer-conventional/src/main/java/io/github/sam42r/semver/analyzer/ConventionalCommitAnalyzer.java index 74e7c67..eb53e20 100644 --- a/semver-analyzer-conventional/src/main/java/io/github/sam42r/semver/analyzer/ConventionalCommitAnalyzer.java +++ b/semver-analyzer-conventional/src/main/java/io/github/sam42r/semver/analyzer/ConventionalCommitAnalyzer.java @@ -104,7 +104,7 @@ private AnalyzedCommit analyzeCommit(@NonNull Commit commit, @NonNull Remote rem body, footer, type, - getCategory(type), + getCategory(type, scope), scope, description, breaking.isPresent() || footer.contains("BREAKING CHANGE") ? SemVerChangeLevel.MAJOR : getLevel(type), @@ -114,7 +114,11 @@ private AnalyzedCommit analyzeCommit(@NonNull Commit commit, @NonNull Remote rem ); } - private ChangeCategory getCategory(String type) { + private ChangeCategory getCategory(String type, String scope) { + if ("security".equalsIgnoreCase(scope)) { + return ChangeCategory.SECURITY; + } + if (type != null) { return configuration.getItems().stream() .filter(v -> v.type().equals(type)) diff --git a/semver-analyzer-conventional/src/test/java/io/github/sam42r/semver/analyzer/ConventionalCommitAnalyzerTest.java b/semver-analyzer-conventional/src/test/java/io/github/sam42r/semver/analyzer/ConventionalCommitAnalyzerTest.java index 4b9984f..07d2de3 100644 --- a/semver-analyzer-conventional/src/test/java/io/github/sam42r/semver/analyzer/ConventionalCommitAnalyzerTest.java +++ b/semver-analyzer-conventional/src/test/java/io/github/sam42r/semver/analyzer/ConventionalCommitAnalyzerTest.java @@ -117,4 +117,43 @@ void shouldFindBreakingChanges() { List.of()) ); } + + @Test + void shouldSecurityFindFix() { + var actual = uut.analyzeCommits(List.of( + new Commit("42", Instant.EPOCH, "JUnit", + """ + fix(security): use string encryption + + * replaced weak encryption + + refs #42 + """) + ), + Remote.of("git@github.com:Sam42R/semver-maven-plugin.git"), + new ProviderSpec("%s://%s/%s/%s/%s", "%s://%s/%s/%s/%s", "%s://%s/%s/%s/%s...%s") + ); + + assertThat(actual).containsExactly( + new AnalyzedCommit( + new Commit("42", Instant.EPOCH, "JUnit", + """ + fix(security): use string encryption + + * replaced weak encryption + + refs #42 + """), + "https://github.com/Sam42R/semver-maven-plugin/42", + "fix(security): use string encryption", + "* replaced weak encryption", + "refs #42", + "fix", + ChangeCategory.SECURITY, + "security", + "use string encryption", + SemVerChangeLevel.PATCH, + List.of(new Issue("42", "https://github.com/Sam42R/semver-maven-plugin/42"))) + ); + } } diff --git a/semver-changelog-api/src/main/java/io/github/sam42r/semver/changelog/ChangelogRendererFactory.java b/semver-changelog-api/src/main/java/io/github/sam42r/semver/changelog/ChangelogRendererFactory.java index c12c44c..51c3a5e 100644 --- a/semver-changelog-api/src/main/java/io/github/sam42r/semver/changelog/ChangelogRendererFactory.java +++ b/semver-changelog-api/src/main/java/io/github/sam42r/semver/changelog/ChangelogRendererFactory.java @@ -4,5 +4,11 @@ public interface ChangelogRendererFactory { - @NonNull R getInstance(@NonNull String template); + @NonNull R getInstance( + @NonNull String template, + boolean renderIssueLinks, + boolean renderCommitLinks, + boolean renderReleaseLinks, + boolean renderBody + ); } diff --git a/semver-changelog-html/src/main/java/io/github/sam42r/semver/changelog/HtmlRenderer.java b/semver-changelog-html/src/main/java/io/github/sam42r/semver/changelog/HtmlRenderer.java index 3a485d7..ae5f0bc 100644 --- a/semver-changelog-html/src/main/java/io/github/sam42r/semver/changelog/HtmlRenderer.java +++ b/semver-changelog-html/src/main/java/io/github/sam42r/semver/changelog/HtmlRenderer.java @@ -1,7 +1,7 @@ package io.github.sam42r.semver.changelog; -import io.github.sam42r.semver.model.changelog.VersionInfo; import io.github.sam42r.semver.model.analyze.AnalyzedCommit; +import io.github.sam42r.semver.model.changelog.VersionInfo; import lombok.NonNull; import lombok.RequiredArgsConstructor; import org.apache.commons.codec.digest.DigestUtils; @@ -19,6 +19,10 @@ public class HtmlRenderer implements ChangelogRenderer { private final String template; + private final boolean renderIssueLinks; + private final boolean renderCommitLinks; + private final boolean renderReleaseLinks; + private final boolean renderBody; @Override public @NonNull InputStream renderChangelog( @@ -44,6 +48,11 @@ public class HtmlRenderer implements ChangelogRenderer { ) { var context = new Context(); + context.setVariable("renderIssueLinks", renderIssueLinks); + context.setVariable("renderCommitLinks", renderCommitLinks); + context.setVariable("renderReleaseLinks", renderReleaseLinks); + context.setVariable("renderBody", renderBody); + context.setVariable("release", versionInfo); context.setVariable("commits", analyzedCommits); diff --git a/semver-changelog-html/src/main/java/io/github/sam42r/semver/changelog/HtmlRendererFactory.java b/semver-changelog-html/src/main/java/io/github/sam42r/semver/changelog/HtmlRendererFactory.java index 85146df..925d1dc 100644 --- a/semver-changelog-html/src/main/java/io/github/sam42r/semver/changelog/HtmlRendererFactory.java +++ b/semver-changelog-html/src/main/java/io/github/sam42r/semver/changelog/HtmlRendererFactory.java @@ -8,7 +8,13 @@ public class HtmlRendererFactory implements ChangelogRendererFactory { @Override - public @NonNull HtmlRenderer getInstance(@NonNull String template) { - return new HtmlRenderer(template); + public @NonNull HtmlRenderer getInstance( + @NonNull String template, + boolean renderIssueLinks, + boolean renderCommitLinks, + boolean renderReleaseLinks, + boolean renderBody + ) { + return new HtmlRenderer(template, renderIssueLinks, renderCommitLinks, renderReleaseLinks, renderBody); } } diff --git a/semver-changelog-html/src/main/resources/templates/default/default.html b/semver-changelog-html/src/main/resources/templates/default/default.html index fc0b6f3..1b9881c 100644 --- a/semver-changelog-html/src/main/resources/templates/default/default.html +++ b/semver-changelog-html/src/main/resources/templates/default/default.html @@ -21,7 +21,8 @@

Changelog

- v0.0.1 + v0.0.1 + v0.0.1

diff --git a/semver-changelog-html/src/main/resources/templates/missive/missive.html b/semver-changelog-html/src/main/resources/templates/missive/missive.html index 06ffe36..4aee2fc 100644 --- a/semver-changelog-html/src/main/resources/templates/missive/missive.html +++ b/semver-changelog-html/src/main/resources/templates/missive/missive.html @@ -25,7 +25,8 @@

Changelog

- v0.0.1 + v0.0.1 + v0.0.1 (1970-01-01) @@ -61,16 +62,21 @@

Changelog

+ + +
- Lorem ipsum + Lorem ipsum - () + - +
+ Lorem ipsum +
diff --git a/semver-changelog-html/src/main/resources/templates/spinal/spinal.html b/semver-changelog-html/src/main/resources/templates/spinal/spinal.html index 86d0eaf..c2e4099 100644 --- a/semver-changelog-html/src/main/resources/templates/spinal/spinal.html +++ b/semver-changelog-html/src/main/resources/templates/spinal/spinal.html @@ -25,7 +25,8 @@

- v0.0.1 + v0.0.1 + v0.0.1