mirror of
https://github.com/jlengrand/jreleaser.git
synced 2026-03-10 08:31:24 +00:00
[changelog] add possibility to overwrite previous tag Resolves #382
This commit is contained in:
committed by
Andres Almiray
parent
ba1ed9b50d
commit
00b584f2f8
@@ -75,6 +75,10 @@ public class Release extends AbstractPlatformAwareModelCommand {
|
||||
description = "The release tag.")
|
||||
String tagName;
|
||||
|
||||
@CommandLine.Option(names = {"--previous-tag-name"},
|
||||
description = "The previous release tag.")
|
||||
String previousTagName;
|
||||
|
||||
@CommandLine.Option(names = {"--release-name"},
|
||||
description = "The release name.")
|
||||
String releaseName;
|
||||
@@ -180,6 +184,7 @@ public class Release extends AbstractPlatformAwareModelCommand {
|
||||
.projectSnapshotLabel(projectSnapshotLabel)
|
||||
.projectSnapshotFullChangelog(projectSnapshotFullChangelog)
|
||||
.tagName(tagName)
|
||||
.previousTagName(previousTagName)
|
||||
.releaseName(releaseName)
|
||||
.milestoneName(milestoneName)
|
||||
.branch(branch)
|
||||
|
||||
@@ -67,6 +67,7 @@ public class ModelAutoConfigurer {
|
||||
private String projectSnapshotLabel;
|
||||
private boolean projectSnapshotFullChangelog;
|
||||
private String tagName;
|
||||
private String previousTagName;
|
||||
private String releaseName;
|
||||
private String milestoneName;
|
||||
private String branch;
|
||||
@@ -145,6 +146,11 @@ public class ModelAutoConfigurer {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ModelAutoConfigurer previousTagName(String previousTagName) {
|
||||
this.previousTagName = previousTagName;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ModelAutoConfigurer branch(String branch) {
|
||||
this.branch = branch;
|
||||
return this;
|
||||
@@ -331,6 +337,7 @@ public class ModelAutoConfigurer {
|
||||
if (projectSnapshotFullChangelog) logger.info("- project.snapshot.full.changelog: true");
|
||||
if (isNotBlank(username)) logger.info("- release.username: {}", username);
|
||||
if (isNotBlank(tagName)) logger.info("- release.tagName: {}", tagName);
|
||||
if (isNotBlank(previousTagName)) logger.info("- release.previousTagName: {}", previousTagName);
|
||||
if (isNotBlank(branch)) logger.info("- release.branch: {}", branch);
|
||||
if (isNotBlank(releaseName)) logger.info("- release.releaseName: {}", releaseName);
|
||||
if (isNotBlank(milestoneName)) logger.info("- release.milestone.name: {}", milestoneName);
|
||||
@@ -402,6 +409,7 @@ public class ModelAutoConfigurer {
|
||||
|
||||
service.setUsername(username);
|
||||
service.setTagName(tagName);
|
||||
service.setPreviousTagName(previousTagName);
|
||||
service.setReleaseName(releaseName);
|
||||
service.getMilestone().setName(milestoneName);
|
||||
service.setOverwrite(overwrite);
|
||||
|
||||
@@ -44,6 +44,7 @@ public abstract class GitService implements Releaser, CommitAuthorAware, OwnerAw
|
||||
public static final String KEY_SKIP_RELEASE_SIGNATURES = "skipReleaseSignatures";
|
||||
|
||||
public static final String TAG_NAME = "TAG_NAME";
|
||||
public static final String PREVIOUS_TAG_NAME = "PREVIOUS_TAG_NAME";
|
||||
public static final String RELEASE_NAME = "RELEASE_NAME";
|
||||
public static final String OVERWRITE = "OVERWRITE";
|
||||
public static final String UPDATE = "UPDATE";
|
||||
@@ -75,6 +76,7 @@ public abstract class GitService implements Releaser, CommitAuthorAware, OwnerAw
|
||||
private String username;
|
||||
private String token;
|
||||
private String tagName;
|
||||
private String previousTagName;
|
||||
private String releaseName;
|
||||
private String branch;
|
||||
private boolean sign;
|
||||
@@ -123,6 +125,7 @@ public abstract class GitService implements Releaser, CommitAuthorAware, OwnerAw
|
||||
this.username = service.username;
|
||||
this.token = service.token;
|
||||
this.tagName = service.tagName;
|
||||
this.previousTagName = service.previousTagName;
|
||||
this.releaseName = service.releaseName;
|
||||
this.branch = service.branch;
|
||||
this.sign = service.sign;
|
||||
@@ -156,6 +159,10 @@ public abstract class GitService implements Releaser, CommitAuthorAware, OwnerAw
|
||||
return Env.resolve(TAG_NAME, tagName);
|
||||
}
|
||||
|
||||
public String getConfiguredPreviousTagName() {
|
||||
return Env.resolve(PREVIOUS_TAG_NAME, previousTagName);
|
||||
}
|
||||
|
||||
public String getResolvedTagName(JReleaserModel model) {
|
||||
if (isBlank(cachedTagName)) {
|
||||
cachedTagName = getConfiguredTagName();
|
||||
@@ -463,6 +470,14 @@ public abstract class GitService implements Releaser, CommitAuthorAware, OwnerAw
|
||||
this.tagName = tagName;
|
||||
}
|
||||
|
||||
public String getPreviousTagName() {
|
||||
return previousTagName;
|
||||
}
|
||||
|
||||
public void setPreviousTagName(String previousTagName) {
|
||||
this.previousTagName = previousTagName;
|
||||
}
|
||||
|
||||
public String getReleaseName() {
|
||||
return releaseName;
|
||||
}
|
||||
|
||||
@@ -62,6 +62,7 @@ public class JReleaserAutoConfigReleaseTask extends Task {
|
||||
private String projectSnapshotLabel;
|
||||
private boolean projectSnapshotFullChangelog;
|
||||
private String tagName;
|
||||
private String previousTagName;
|
||||
private String releaseName;
|
||||
private String branch;
|
||||
private String milestoneName;
|
||||
@@ -129,6 +130,10 @@ public class JReleaserAutoConfigReleaseTask extends Task {
|
||||
this.tagName = tagName;
|
||||
}
|
||||
|
||||
public void setPreviousTagName(String previousTagName) {
|
||||
this.previousTagName = previousTagName;
|
||||
}
|
||||
|
||||
public void setReleaseName(String releaseName) {
|
||||
this.releaseName = releaseName;
|
||||
}
|
||||
@@ -237,6 +242,7 @@ public class JReleaserAutoConfigReleaseTask extends Task {
|
||||
.projectSnapshotLabel(projectSnapshotLabel)
|
||||
.projectSnapshotFullChangelog(projectSnapshotFullChangelog)
|
||||
.tagName(tagName)
|
||||
.previousTagName(previousTagName)
|
||||
.releaseName(releaseName)
|
||||
.branch(branch)
|
||||
.milestoneName(milestoneName)
|
||||
|
||||
@@ -77,6 +77,8 @@ interface GitService extends Releaser {
|
||||
|
||||
Property<String> getTagName()
|
||||
|
||||
Property<String> getPreviousTagName()
|
||||
|
||||
Property<String> getReleaseName()
|
||||
|
||||
Property<String> getBranch()
|
||||
|
||||
@@ -56,6 +56,7 @@ abstract class AbstractGitService implements GitService {
|
||||
final Property<String> username
|
||||
final Property<String> token
|
||||
final Property<String> tagName
|
||||
final Property<String> previousTagName
|
||||
final Property<String> releaseName
|
||||
final Property<String> branch
|
||||
final Property<Boolean> sign
|
||||
@@ -89,6 +90,7 @@ abstract class AbstractGitService implements GitService {
|
||||
username = objects.property(String).convention(Providers.notDefined())
|
||||
token = objects.property(String).convention(Providers.notDefined())
|
||||
tagName = objects.property(String).convention(Providers.notDefined())
|
||||
previousTagName = objects.property(String).convention(Providers.notDefined())
|
||||
releaseName = objects.property(String).convention(Providers.notDefined())
|
||||
branch = objects.property(String).convention(Providers.notDefined())
|
||||
sign = objects.property(Boolean).convention(Providers.notDefined())
|
||||
@@ -171,6 +173,7 @@ abstract class AbstractGitService implements GitService {
|
||||
username.present ||
|
||||
token.present ||
|
||||
tagName.present ||
|
||||
previousTagName.present ||
|
||||
releaseName.present ||
|
||||
branch.present ||
|
||||
sign.present ||
|
||||
@@ -240,6 +243,7 @@ abstract class AbstractGitService implements GitService {
|
||||
if (username.present) service.username = username.get()
|
||||
if (token.present) service.token = token.get()
|
||||
if (tagName.present) service.tagName = tagName.get()
|
||||
if (previousTagName.present) service.previousTagName = previousTagName.get()
|
||||
if (releaseName.present) service.releaseName = releaseName.get()
|
||||
if (branch.present) service.branch = branch.get()
|
||||
if (apiEndpoint.present) service.apiEndpoint = apiEndpoint.get()
|
||||
|
||||
@@ -45,6 +45,7 @@ public abstract class GitService implements Releaser {
|
||||
private String username;
|
||||
private String token;
|
||||
private String tagName;
|
||||
private String previousTagName;
|
||||
private String releaseName;
|
||||
private String branch;
|
||||
private boolean sign;
|
||||
@@ -75,6 +76,7 @@ public abstract class GitService implements Releaser {
|
||||
this.username = service.username;
|
||||
this.token = service.token;
|
||||
this.tagName = service.tagName;
|
||||
this.previousTagName = service.previousTagName;
|
||||
this.releaseName = service.releaseName;
|
||||
this.branch = service.branch;
|
||||
this.sign = service.sign;
|
||||
@@ -298,6 +300,14 @@ public abstract class GitService implements Releaser {
|
||||
this.tagName = tagName;
|
||||
}
|
||||
|
||||
public String getPreviousTagName() {
|
||||
return previousTagName;
|
||||
}
|
||||
|
||||
public void setPreviousTagName(String previousTagName) {
|
||||
this.previousTagName = previousTagName;
|
||||
}
|
||||
|
||||
public String getReleaseName() {
|
||||
return releaseName;
|
||||
}
|
||||
|
||||
@@ -108,6 +108,11 @@ public class JReleaserAutoConfigReleaseMojo extends AbstractMojo {
|
||||
*/
|
||||
@Parameter(property = "jreleaser.tag.name")
|
||||
private String tagName;
|
||||
/**
|
||||
* The previous release tag.
|
||||
*/
|
||||
@Parameter(property = "jreleaser.previous.tag.name")
|
||||
private String previousTagName;
|
||||
/**
|
||||
* The release name.
|
||||
*/
|
||||
@@ -236,6 +241,7 @@ public class JReleaserAutoConfigReleaseMojo extends AbstractMojo {
|
||||
.projectSnapshotLabel(projectSnapshotLabel)
|
||||
.projectSnapshotFullChangelog(projectSnapshotFullChangelog)
|
||||
.tagName(tagName)
|
||||
.previousTagName(previousTagName)
|
||||
.releaseName(releaseName)
|
||||
.branch(branch)
|
||||
.milestoneName(milestoneName)
|
||||
|
||||
@@ -247,6 +247,7 @@ public final class JReleaserModelConverter {
|
||||
if (isNotBlank(service.getUsername())) s.setUsername(service.getUsername());
|
||||
if (isNotBlank(service.getToken())) s.setToken(service.getToken());
|
||||
if (isNotBlank(service.getTagName())) s.setTagName(service.getTagName());
|
||||
if (isNotBlank(service.getPreviousTagName())) s.setPreviousTagName(service.getPreviousTagName());
|
||||
if (isNotBlank(service.getReleaseName())) s.setReleaseName(service.getReleaseName());
|
||||
if (isNotBlank(service.getBranch())) s.setBranch(service.getBranch());
|
||||
s.setCommitAuthor(convertCommitAuthor(service.getCommitAuthor()));
|
||||
|
||||
@@ -31,6 +31,7 @@ import org.jreleaser.model.Project;
|
||||
import org.jreleaser.model.releaser.spi.User;
|
||||
import org.jreleaser.util.CollectionUtils;
|
||||
import org.jreleaser.util.JavaModuleVersion;
|
||||
import org.jreleaser.util.StringUtils;
|
||||
import org.jreleaser.util.Version;
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -238,10 +239,19 @@ public class ChangelogGenerator {
|
||||
|
||||
Comparable currentVersion = version(context, tag.get(), versionPattern);
|
||||
|
||||
Optional<Ref> previousTag = tags.stream()
|
||||
String previousTagName = gitService.getConfiguredPreviousTagName();
|
||||
Optional<Ref> previousTag;
|
||||
|
||||
if (StringUtils.isNotBlank(previousTagName)) {
|
||||
previousTag = tags.stream()
|
||||
.filter(ref -> extractTagName(ref).equals(previousTagName))
|
||||
.findFirst();
|
||||
} else {
|
||||
previousTag = tags.stream()
|
||||
.filter(ref -> extractTagName(ref).matches(tagPattern))
|
||||
.filter(ref -> lessThan(version(context, ref, versionPattern), currentVersion))
|
||||
.findFirst();
|
||||
}
|
||||
|
||||
if (previousTag.isPresent()) {
|
||||
context.getLogger().debug("found tag {}", extractTagName(previousTag.get()));
|
||||
|
||||
Reference in New Issue
Block a user