From f0f7f597127c8acc93a8898e718a19c2342f2ef6 Mon Sep 17 00:00:00 2001 From: Szczepan Faber Date: Tue, 2 May 2017 17:57:18 -0700 Subject: [PATCH 1/6] Added Javadoc, rename job for clarity --- .../notes/generator/ReleaseNotesGenerators.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/groovy/org/mockito/release/notes/generator/ReleaseNotesGenerators.java b/src/main/groovy/org/mockito/release/notes/generator/ReleaseNotesGenerators.java index 779df693..da74d5f7 100644 --- a/src/main/groovy/org/mockito/release/notes/generator/ReleaseNotesGenerators.java +++ b/src/main/groovy/org/mockito/release/notes/generator/ReleaseNotesGenerators.java @@ -16,12 +16,17 @@ public class ReleaseNotesGenerators { //TODO move entire "org.mockito.release.notes" -> "org.mockito.release.internal.notes" - public static ReleaseNotesGenerator releaseNotesGenerator(File workDir, String repository, String readOnlyAuthToken) { + /** + * @param workDir the working directory where 'git' operations will be executed + * @param gitHubRepository GitHub gitHubRepository in format USER|COMPANY/REPO_NAME, for example: mockito/mockito + * @param readOnlyAuthToken read only auth token used to communicate with GitHub + */ + public static ReleaseNotesGenerator releaseNotesGenerator(File workDir, String gitHubRepository, String readOnlyAuthToken) { ProcessRunner processRunner = Exec.getProcessRunner(workDir); ContributionsProvider contributionsProvider = Vcs.getContributionsProvider(processRunner); - ImprovementsProvider improvementsProvider = Improvements.getGitHubProvider(repository, readOnlyAuthToken); + ImprovementsProvider improvementsProvider = Improvements.getGitHubProvider(gitHubRepository, readOnlyAuthToken); ReleasedVersionsProvider releasedVersionsProvider = Vcs.getReleaseDateProvider(processRunner); - GitHubContributorsProvider contributorsProvider = Contributors.getGitHubContributorsProvider(repository, readOnlyAuthToken); + GitHubContributorsProvider contributorsProvider = Contributors.getGitHubContributorsProvider(gitHubRepository, readOnlyAuthToken); return new DefaultReleaseNotesGenerator(contributionsProvider, improvementsProvider, releasedVersionsProvider, contributorsProvider); } From 72905929e049e3df20e26414ede8cd06541bf519 Mon Sep 17 00:00:00 2001 From: Szczepan Faber Date: Tue, 2 May 2017 18:19:23 -0700 Subject: [PATCH 2/6] Made ContributorsPlugin use new 'previousVersion' setting This new setting is great! Code will be so much cleaner. --- .../release/internal/gradle/ContributorsPlugin.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/main/groovy/org/mockito/release/internal/gradle/ContributorsPlugin.java b/src/main/groovy/org/mockito/release/internal/gradle/ContributorsPlugin.java index f13c5cab..dce98add 100644 --- a/src/main/groovy/org/mockito/release/internal/gradle/ContributorsPlugin.java +++ b/src/main/groovy/org/mockito/release/internal/gradle/ContributorsPlugin.java @@ -4,10 +4,9 @@ import org.gradle.api.Plugin; import org.gradle.api.Project; import org.mockito.release.gradle.ReleaseConfiguration; -import org.mockito.release.internal.gradle.util.FileUtil; import org.mockito.release.internal.gradle.util.TaskMaker; -import org.mockito.release.notes.Notes; import org.mockito.release.notes.contributors.Contributors; +import org.mockito.release.version.VersionInfo; import java.io.File; @@ -45,7 +44,9 @@ public void execute(final ContributorsFetcherTask task) { deferredConfiguration(project, new Runnable() { public void run() { - String fromRevision = fromRevision(project, conf); + //TODO more and more tasks and plugins depend on VersionInfo. + //we should consider making it a part of release configuration in similar way we do 'releasing.notableRepo' + String fromRevision = "v" + project.getExtensions().getByType(VersionInfo.class).getPreviousVersion(); File contributorsFile = lastContributorsFile(project, fromRevision, toRevision); task.setReadOnlyAuthToken(conf.getGitHub().getReadOnlyAuthToken()); @@ -79,11 +80,6 @@ public void run() { }); } - private String fromRevision(Project project, ReleaseConfiguration conf) { - String firstLine = FileUtil.firstLine(project.file(conf.getReleaseNotes().getFile())); - return "v" + Notes.previousVersion(firstLine).getPreviousVersion(); - } - private File lastContributorsFile(Project project, String fromRevision, String toRevision) { String contributorsFileName = Contributors.getLastContributorsFileName( project.getBuildDir().getAbsolutePath(), fromRevision, toRevision); From a0b76e9795e29cbd3e01cb065372654017aaff5e Mon Sep 17 00:00:00 2001 From: Szczepan Faber Date: Tue, 2 May 2017 18:20:43 -0700 Subject: [PATCH 3/6] Replaced the internal release notes formatter New formatter offers much cleaner outlook. However, this breaks 2 features: - we no longer show 'publication repository' - we no longer show contributor links I will address those issues in the next set of changes --- .../gradle/IncrementalReleaseNotes.java | 62 +++++++++++-------- .../internal/gradle/ReleaseNotesPlugin.java | 1 + 2 files changed, 38 insertions(+), 25 deletions(-) diff --git a/src/main/groovy/org/mockito/release/gradle/IncrementalReleaseNotes.java b/src/main/groovy/org/mockito/release/gradle/IncrementalReleaseNotes.java index e1a9d93f..1b09c8b2 100644 --- a/src/main/groovy/org/mockito/release/gradle/IncrementalReleaseNotes.java +++ b/src/main/groovy/org/mockito/release/gradle/IncrementalReleaseNotes.java @@ -6,13 +6,19 @@ import org.gradle.api.logging.Logging; import org.gradle.api.tasks.*; import org.mockito.release.internal.gradle.util.FileUtil; -import org.mockito.release.notes.Notes; -import org.mockito.release.notes.NotesBuilder; +import org.mockito.release.notes.format.ReleaseNotesFormatters; +import org.mockito.release.notes.generator.ReleaseNotesGenerator; +import org.mockito.release.notes.generator.ReleaseNotesGenerators; +import org.mockito.release.notes.model.ReleaseNotesData; import java.io.File; +import java.util.Collection; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; +import static java.util.Arrays.asList; + /** * Generates incremental, detailed release notes text. * that can be appended to the release notes file. @@ -21,6 +27,7 @@ public abstract class IncrementalReleaseNotes extends DefaultTask { private static final Logger LOG = Logging.getLogger(IncrementalReleaseNotes.class); + private String previousVersion; private File releaseNotesFile; private String gitHubReadOnlyAuthToken; private String gitHubRepository; @@ -109,6 +116,21 @@ public void setPublicationRepository(String publicationRepository) { this.publicationRepository = publicationRepository; } + /** + * Previous released version we generate the release notes from. + */ + @Input + public String getPreviousVersion() { + return previousVersion; + } + + /** + * See {@link #getPreviousVersion()} + */ + public void setPreviousVersion(String previousVersion) { + this.previousVersion = previousVersion; + } + private void assertConfigured() { //TODO SF unit test coverage if (releaseNotesFile == null || !releaseNotesFile.isFile()) { @@ -124,35 +146,25 @@ private void assertConfigured() { } } - /** - * Returns previous version based on the release notes file. - * It parses the first line of the release notes file to identify previously released version. - */ - private String getPreviousVersion() { - //TODO this is really awkward method. - // We should not be reading previous version from release notes file - // We should either not read it at all (e.g. write the impl so that it does not require the previous version) - // or store previous release version in the 'version.properties' file. - assertConfigured(); - String firstLine = FileUtil.firstLine(releaseNotesFile); - return Notes.previousVersion(firstLine).getPreviousVersion(); - } - /** * Generates new incremental content of the release notes. */ protected String getNewContent() { assertConfigured(); LOG.lifecycle(" Building new release notes based on {}", releaseNotesFile); - NotesBuilder builder = Notes.gitHubNotesBuilder( - this.getProject().getProjectDir(), this.getProject().getBuildDir(), - gitHubRepository, gitHubReadOnlyAuthToken); - String prev = "v" + getPreviousVersion(); - String current = "HEAD"; - LOG.lifecycle(" Generating release note for revisions: {} -> {}", prev, current); - String v = this.getProject().getVersion().toString(); - String newContent = builder.buildNotes(v, prev, current, gitHubLabelMapping, publicationRepository); - return newContent; + + ReleaseNotesGenerator generator = ReleaseNotesGenerators.releaseNotesGenerator(getProject().getRootDir(), gitHubRepository, gitHubReadOnlyAuthToken); + String version = getProject().getVersion().toString(); + String tagPrefix = "v"; + Collection data = generator.generateReleaseNotesData( + version, asList(previousVersion), tagPrefix, Collections.emptyList(), false); + String vcsCommitTemplate = "https://github.com/" + gitHubRepository + "/compare/" + + tagPrefix + previousVersion + "..." + tagPrefix + version; + String notes = ReleaseNotesFormatters.detailedFormatter( + "", gitHubLabelMapping, vcsCommitTemplate) + .formatReleaseNotes(data); + + return notes + "\n\n"; } /** diff --git a/src/main/groovy/org/mockito/release/internal/gradle/ReleaseNotesPlugin.java b/src/main/groovy/org/mockito/release/internal/gradle/ReleaseNotesPlugin.java index 39a680cf..b34bcc55 100644 --- a/src/main/groovy/org/mockito/release/internal/gradle/ReleaseNotesPlugin.java +++ b/src/main/groovy/org/mockito/release/internal/gradle/ReleaseNotesPlugin.java @@ -87,6 +87,7 @@ public void run() { task.setReleaseNotesFile(project.file(conf.getReleaseNotes().getFile())); //TODO add sensible default task.setGitHubReadOnlyAuthToken(conf.getGitHub().getReadOnlyAuthToken()); task.setGitHubRepository(conf.getGitHub().getRepository()); + task.setPreviousVersion(project.getExtensions().getByType(VersionInfo.class).getPreviousVersion()); } }); } From ea1491efd6741d89c7de2198cc267878efd2eabb Mon Sep 17 00:00:00 2001 From: Szczepan Faber Date: Tue, 2 May 2017 18:30:57 -0700 Subject: [PATCH 4/6] Made the detailed release notes include publication repository --- .../release/gradle/IncrementalReleaseNotes.java | 2 +- .../release/notes/format/DetailedFormatter.java | 11 +++++++---- .../notes/format/ReleaseNotesFormatters.java | 11 +++++------ .../notes/format/DetailedFormatterTest.groovy | 14 +++++++++----- 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/main/groovy/org/mockito/release/gradle/IncrementalReleaseNotes.java b/src/main/groovy/org/mockito/release/gradle/IncrementalReleaseNotes.java index 1b09c8b2..013e6554 100644 --- a/src/main/groovy/org/mockito/release/gradle/IncrementalReleaseNotes.java +++ b/src/main/groovy/org/mockito/release/gradle/IncrementalReleaseNotes.java @@ -161,7 +161,7 @@ protected String getNewContent() { String vcsCommitTemplate = "https://github.com/" + gitHubRepository + "/compare/" + tagPrefix + previousVersion + "..." + tagPrefix + version; String notes = ReleaseNotesFormatters.detailedFormatter( - "", gitHubLabelMapping, vcsCommitTemplate) + "", gitHubLabelMapping, vcsCommitTemplate, publicationRepository) .formatReleaseNotes(data); return notes + "\n\n"; diff --git a/src/main/groovy/org/mockito/release/notes/format/DetailedFormatter.java b/src/main/groovy/org/mockito/release/notes/format/DetailedFormatter.java index 1a597093..1dc97029 100644 --- a/src/main/groovy/org/mockito/release/notes/format/DetailedFormatter.java +++ b/src/main/groovy/org/mockito/release/notes/format/DetailedFormatter.java @@ -17,11 +17,14 @@ class DetailedFormatter implements MultiReleaseNotesFormatter { private final String introductionText; private final Map labelMapping; private final String vcsCommitsLinkTemplate; + private final String publicationRepository; - DetailedFormatter(String introductionText, Map labelMapping, String vcsCommitsLinkTemplate) { + DetailedFormatter(String introductionText, Map labelMapping, String vcsCommitsLinkTemplate, + String publicationRepository) { this.introductionText = introductionText; this.labelMapping = labelMapping; this.vcsCommitsLinkTemplate = vcsCommitsLinkTemplate; + this.publicationRepository = publicationRepository; } @Override @@ -35,7 +38,7 @@ public String formatReleaseNotes(Collection data) { for (ReleaseNotesData d : data) { sb.append("**").append(d.getVersion()).append("** - "); String vcsCommitsLink = MessageFormat.format(vcsCommitsLinkTemplate, d.getPreviousVersionVcsTag(), d.getVcsTag()); - sb.append(releaseSummary(d.getDate(), d.getContributions(), vcsCommitsLink)); + sb.append(releaseSummary(d.getDate(), d.getContributions(), vcsCommitsLink, publicationRepository)); if (!d.getContributions().getContributions().isEmpty()) { //no point printing any improvements information if there are no code changes @@ -48,9 +51,9 @@ public String formatReleaseNotes(Collection data) { return sb.toString().trim(); } - static String releaseSummary(Date date, ContributionSet contributions, String vcsCommitsLink) { + static String releaseSummary(Date date, ContributionSet contributions, String vcsCommitsLink, String publicationRepository) { return authorsSummary(contributions, vcsCommitsLink) + - " - *" + DateFormat.formatDate(date) + "*\n" + + " - *" + DateFormat.formatDate(date) + "*" + " - published to " + publicationRepository + "\n" + authorsSummaryAppendix(contributions); } diff --git a/src/main/groovy/org/mockito/release/notes/format/ReleaseNotesFormatters.java b/src/main/groovy/org/mockito/release/notes/format/ReleaseNotesFormatters.java index 139a7076..4d5be0de 100644 --- a/src/main/groovy/org/mockito/release/notes/format/ReleaseNotesFormatters.java +++ b/src/main/groovy/org/mockito/release/notes/format/ReleaseNotesFormatters.java @@ -39,8 +39,7 @@ public static MultiReleaseNotesFormatter notableFormatter(String introductionTex /** * Returns the detailed formatter intended to use for all releases - * - * @param introductionText text to be placed on the top of the release notes content + * @param introductionText text to be placed on the top of the release notes content * @param labelMapping Mapping of label to descriptive label summary. * Labels of the improvements (see {@link org.mockito.release.notes.model.Improvement#getLabels()} * are often short and not very descriptive. @@ -48,12 +47,12 @@ public static MultiReleaseNotesFormatter notableFormatter(String introductionTex * Mappings also allow controlling priority in presenting improvements - * the formatter can use the order of label mappings. For example, 'noteworthy' labelled improvements on top. * @param vcsCommitsLinkTemplate template to generate link to vcs view of the commits. - * For example: https://github.com/mockito/mockito/compare/{0}...{1}". - * When template is formatted, 1st arg will be "fromRevision", 2nd will be "toRevision". + * For example: https://github.com/mockito/mockito/compare/{0}...{1}". + * @param publicationRepository where the binaries were published to, will be printed as-is in the release notes */ public static MultiReleaseNotesFormatter detailedFormatter(String introductionText, Map labelMapping, - String vcsCommitsLinkTemplate) { - return new DetailedFormatter(introductionText, labelMapping, vcsCommitsLinkTemplate); + String vcsCommitsLinkTemplate, String publicationRepository) { + return new DetailedFormatter(introductionText, labelMapping, vcsCommitsLinkTemplate, publicationRepository); } } diff --git a/src/test/groovy/org/mockito/release/notes/format/DetailedFormatterTest.groovy b/src/test/groovy/org/mockito/release/notes/format/DetailedFormatterTest.groovy index 408ca608..7167fa6d 100644 --- a/src/test/groovy/org/mockito/release/notes/format/DetailedFormatterTest.groovy +++ b/src/test/groovy/org/mockito/release/notes/format/DetailedFormatterTest.groovy @@ -10,7 +10,8 @@ import spock.lang.Specification class DetailedFormatterTest extends Specification { - def f = new DetailedFormatter("Release notes:\n\n", ["noteworthy": "Noteworthy", "bug": "Bugfixes"], "http://commits/{0}...{1}") + def f = new DetailedFormatter("Release notes:\n\n", ["noteworthy": "Noteworthy", "bug": "Bugfixes"], + "http://commits/{0}...{1}", "Bintray") def "no releases"() { expect: @@ -26,9 +27,9 @@ No release information.""" expect: f.formatReleaseNotes([d1, d2]) == """Release notes: -**2.0.0** - no code changes (no commits) - *2017-01-04* +**2.0.0** - no code changes (no commits) - *2017-01-04* - published to Bintray -**1.9.0** - no code changes (no commits) - *2016-12-30*""" +**1.9.0** - no code changes (no commits) - *2016-12-30* - published to Bintray""" } def "no improvements"() { @@ -43,7 +44,7 @@ No release information.""" expect: f.formatReleaseNotes([d]) == """Release notes: -**2.0.0** - [1 commit](http://commits/v1.9.0...v2.0.0) by Szczepan Faber - *2017-01-04* +**2.0.0** - [1 commit](http://commits/v1.9.0...v2.0.0) by Szczepan Faber - *2017-01-04* - published to Bintray :cocktail: No pull requests referenced in commit messages.""" } @@ -133,8 +134,11 @@ No release information.""" c("Tim van der Lippe", 10)] } + def summary = DetailedFormatter.releaseSummary(new Date(1483500000000), c, "link", + "Bintray repo") + expect: - DetailedFormatter.releaseSummary(new Date(1483500000000), c, "link") == """[100 commits](link) by 4 authors - *2017-01-04* + summary == """[100 commits](link) by 4 authors - *2017-01-04* - published to Bintray repo :cocktail: Commits: Szczepan Faber (40), Brice Dutheil (30), Rafael Winterhalter (20), Tim van der Lippe (10)""" } From 935ee3bdc5d01c22f50ca2e085e4916f774e3351 Mon Sep 17 00:00:00 2001 From: Szczepan Faber Date: Tue, 2 May 2017 20:55:44 -0700 Subject: [PATCH 5/6] Deleted tons of dead code Thank you team for adding some nice things (like previous version in version.properties). This allowed us to get rid of lots of code :) --- .../release/notes/GitNotesBuilder.java | 74 ------------------- .../org/mockito/release/notes/Notes.java | 30 -------- .../mockito/release/notes/NotesBuilder.java | 20 ----- .../groovy/org/mockito/release/notes/TODO.txt | 6 -- .../notes/versions/FromNotesContent.java | 28 ------- .../notes/versions/PreviousVersion.java | 12 --- .../release/notes/versions/Versions.java | 14 ---- .../versions/FromNotesContentTest.groovy | 27 ------- 8 files changed, 211 deletions(-) delete mode 100644 src/main/groovy/org/mockito/release/notes/GitNotesBuilder.java delete mode 100644 src/main/groovy/org/mockito/release/notes/Notes.java delete mode 100644 src/main/groovy/org/mockito/release/notes/NotesBuilder.java delete mode 100644 src/main/groovy/org/mockito/release/notes/TODO.txt delete mode 100644 src/main/groovy/org/mockito/release/notes/versions/FromNotesContent.java delete mode 100644 src/main/groovy/org/mockito/release/notes/versions/PreviousVersion.java delete mode 100644 src/main/groovy/org/mockito/release/notes/versions/Versions.java delete mode 100644 src/test/groovy/org/mockito/release/notes/versions/FromNotesContentTest.groovy diff --git a/src/main/groovy/org/mockito/release/notes/GitNotesBuilder.java b/src/main/groovy/org/mockito/release/notes/GitNotesBuilder.java deleted file mode 100644 index 7b64f134..00000000 --- a/src/main/groovy/org/mockito/release/notes/GitNotesBuilder.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.mockito.release.notes; - -import org.gradle.api.logging.Logger; -import org.gradle.api.logging.Logging; -import org.mockito.release.exec.Exec; -import org.mockito.release.exec.ProcessRunner; -import org.mockito.release.notes.contributors.Contributors; -import org.mockito.release.notes.contributors.ContributorsLoader; -import org.mockito.release.notes.contributors.ContributorsReader; -import org.mockito.release.notes.contributors.ContributorsSet; -import org.mockito.release.notes.format.ReleaseNotesFormatters; -import org.mockito.release.notes.format.SingleReleaseNotesFormatter; -import org.mockito.release.notes.improvements.Improvements; -import org.mockito.release.notes.improvements.ImprovementsProvider; -import org.mockito.release.notes.internal.DefaultReleaseNotesData; -import org.mockito.release.notes.model.ContributionSet; -import org.mockito.release.notes.model.Improvement; -import org.mockito.release.notes.model.ReleaseNotesData; -import org.mockito.release.notes.vcs.ContributionsProvider; -import org.mockito.release.notes.vcs.RevisionProvider; -import org.mockito.release.notes.vcs.Vcs; - -import java.io.File; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.Map; - -class GitNotesBuilder implements NotesBuilder { - - private static final Logger LOG = Logging.getLogger(GitNotesBuilder.class); - - private final File workDir; - private final String readOnlyAuthToken; - private final File buildDir; - private final String repository; - - /** - * @param workDir the working directory for external processes execution (for example: git log) - * @param buildDir build dir - * @param repository GitHub repository, for example: "mockito/mockito" - * @param readOnlyAuthToken the GitHub auth token - */ - GitNotesBuilder(File workDir, File buildDir, String repository, String readOnlyAuthToken) { - this.workDir = workDir; - this.buildDir = buildDir; - this.repository = repository; - this.readOnlyAuthToken = readOnlyAuthToken; - } - - public String buildNotes(String version, String fromRevision, String toRevision, final Map labels, - String publicationRepository) { - LOG.info("Getting release notes between {} and {}", fromRevision, toRevision); - - ProcessRunner processRunner = Exec.getProcessRunner(workDir); - ContributionsProvider contributionsProvider = Vcs.getContributionsProvider(processRunner); - ContributionSet contributions = contributionsProvider.getContributionsBetween(fromRevision, toRevision); - - RevisionProvider revisionProvider = Vcs.getRevisionProvider(processRunner); - String fromRev = revisionProvider.getRevisionForTagOrRevision(fromRevision); - - ContributorsReader contributorsReader = ContributorsLoader.getContributorsReader(); - String contributorsFileName = Contributors.getLastContributorsFileName(buildDir.getAbsolutePath(), fromRevision, toRevision); - ContributorsSet contributors = contributorsReader.loadContributors(contributorsFileName, fromRev, toRevision); - - ImprovementsProvider improvementsProvider = Improvements.getGitHubProvider(repository, readOnlyAuthToken); - Collection improvements = improvementsProvider.getImprovements(contributions, Collections.emptyList(), false); - - ReleaseNotesData data = new DefaultReleaseNotesData(version, new Date(), contributions, improvements, contributors, fromRevision, toRevision); - SingleReleaseNotesFormatter formatter = ReleaseNotesFormatters.defaultFormatter(labels, publicationRepository); - - return formatter.formatVersion(data); - } -} diff --git a/src/main/groovy/org/mockito/release/notes/Notes.java b/src/main/groovy/org/mockito/release/notes/Notes.java deleted file mode 100644 index bec652be..00000000 --- a/src/main/groovy/org/mockito/release/notes/Notes.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.mockito.release.notes; - -import org.mockito.release.notes.versions.PreviousVersion; -import org.mockito.release.notes.versions.Versions; - -import java.io.File; - -/** - * Release notes services - */ -public class Notes { - - /** - * Release notes build based on git and GitHub. - * @param workDir working directory for executing external processes like 'git log' - * @param buildDir build directory - * @param repository GitHub repository, for example "mockito/mockito" - * @param gitHubReadOnlyAuthToken GitHub auth token, read-only please! - */ - public static NotesBuilder gitHubNotesBuilder(File workDir, File buildDir, String repository, String gitHubReadOnlyAuthToken) { - return new GitNotesBuilder(workDir, buildDir, repository, gitHubReadOnlyAuthToken); - } - - /** - * Provides previous version information based on the release notes content file - */ - public static PreviousVersion previousVersion(String releaseNotesContent) { - return Versions.previousFromNotesContent(releaseNotesContent); - } -} diff --git a/src/main/groovy/org/mockito/release/notes/NotesBuilder.java b/src/main/groovy/org/mockito/release/notes/NotesBuilder.java deleted file mode 100644 index b5faafa4..00000000 --- a/src/main/groovy/org/mockito/release/notes/NotesBuilder.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.mockito.release.notes; - -import java.util.Map; - -/** - * Builds the release notes text - */ -public interface NotesBuilder { - - /** - * Release notes text for contributions between given versions. - * @param version the version of the release we're building the notes - * @param fromRevision valid git revision (can be tag name or HEAD) - * @param toRevision valid git revision (can be tag name or HEAD) - * @param labels GitHub/Issue tracker labels to caption mapping - * @param publicationRepository where binaries were published to - */ - String buildNotes(String version, String fromRevision, String toRevision, Map labels, - String publicationRepository); -} diff --git a/src/main/groovy/org/mockito/release/notes/TODO.txt b/src/main/groovy/org/mockito/release/notes/TODO.txt deleted file mode 100644 index 225df902..00000000 --- a/src/main/groovy/org/mockito/release/notes/TODO.txt +++ /dev/null @@ -1,6 +0,0 @@ -Plan for this module: - - extract a library out of it (open source it) - - create a separate gradle plugin that makes use of this library (open source it) - - use java instead of groovy - - design the public api and hide everything behind interfaces (besides a single entry-point class). - There should be no public classes besides one. \ No newline at end of file diff --git a/src/main/groovy/org/mockito/release/notes/versions/FromNotesContent.java b/src/main/groovy/org/mockito/release/notes/versions/FromNotesContent.java deleted file mode 100644 index 287f48e1..00000000 --- a/src/main/groovy/org/mockito/release/notes/versions/FromNotesContent.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.mockito.release.notes.versions; - -import org.mockito.release.notes.util.ReleaseNotesException; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * Retrieves previously released version based on the top entry in the current release notes content. - */ -class FromNotesContent implements PreviousVersion { - - private final String releaseNotesContent; - - FromNotesContent(String releaseNotesContent) { - this.releaseNotesContent = releaseNotesContent; - } - - public String getPreviousVersion() { - //Example: "### 1.9.5 (06-10-2012)", we want to extract "1.9.5" - Pattern p = Pattern.compile("(?s)^### (.+?) .*"); - Matcher m = p.matcher(releaseNotesContent); - if(!m.matches()) { - throw new ReleaseNotesException("Unable to parse previous version from release notes content: " + releaseNotesContent, null); - } - return m.group(1); - } -} diff --git a/src/main/groovy/org/mockito/release/notes/versions/PreviousVersion.java b/src/main/groovy/org/mockito/release/notes/versions/PreviousVersion.java deleted file mode 100644 index 6dc384d7..00000000 --- a/src/main/groovy/org/mockito/release/notes/versions/PreviousVersion.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.mockito.release.notes.versions; - -/** - * Provides the previous version. - */ -public interface PreviousVersion { - - /** - * The previous version - */ - String getPreviousVersion(); -} diff --git a/src/main/groovy/org/mockito/release/notes/versions/Versions.java b/src/main/groovy/org/mockito/release/notes/versions/Versions.java deleted file mode 100644 index a13c9a2b..00000000 --- a/src/main/groovy/org/mockito/release/notes/versions/Versions.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.mockito.release.notes.versions; - -/** - * Version services - */ -public class Versions { - - /** - * Provides a way to retrieve previous version based on the content of the release notes file. - */ - public static PreviousVersion previousFromNotesContent(String notesContent) { - return new FromNotesContent(notesContent); - } -} diff --git a/src/test/groovy/org/mockito/release/notes/versions/FromNotesContentTest.groovy b/src/test/groovy/org/mockito/release/notes/versions/FromNotesContentTest.groovy deleted file mode 100644 index 143ede41..00000000 --- a/src/test/groovy/org/mockito/release/notes/versions/FromNotesContentTest.groovy +++ /dev/null @@ -1,27 +0,0 @@ -package org.mockito.release.notes.versions - -import org.mockito.release.notes.util.ReleaseNotesException -import spock.lang.Specification - -class FromNotesContentTest extends Specification { - - def "gets previous version from notes content"() { - def notes = """### 1.10.12 (2014-11-17 00:09 UTC) -stuff -### 1.10.13 (2014-11-17 00:09 UTC) - -""" - expect: - new FromNotesContent(notes).previousVersion == "1.10.12" - } - - def "gets previous version when no date provided"() { - expect: - new FromNotesContent("### 1.0.0 foo").previousVersion == "1.0.0" - } - - def "throws reasonable exception if version cannot be parsed"() { - when: new FromNotesContent("foo").previousVersion - then: thrown(ReleaseNotesException) - } -} From 33e0a3e360eade32fc85cdd82833e39eb9cd4d35 Mon Sep 17 00:00:00 2001 From: Szczepan Faber Date: Thu, 4 May 2017 06:50:38 -0700 Subject: [PATCH 6/6] Bumped version --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index e9d5b5b9..15c27afc 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ targetCompatibility = 1.6 repositories { jcenter() } -version = '0.8.3' +version = '0.8.4' println " Version: $version" group = 'gradle.plugin.org.mockito'