Skip to content

Commit 1bf9bbe

Browse files
committed
Fix changelog including tag prefix in version numbers
1 parent 66aae1f commit 1bf9bbe

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

src/main/java/net/minecraftforge/gitver/internal/GitChangelog.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,11 @@ static String generateChangelogFromTo(Git git, String repositoryUrl, boolean pla
4545
var changeLogName = Util.replace(git.getRepository().getFullBranch(), s -> s.replace("refs/heads/", "")); //Generate a changelog name from the current branch.
4646

4747
var tagMap = GitUtils.getCommitToTagMap(git, tagPrefix); //Grab a map between commits and tag names.
48-
var log = GitUtils.getCommitLogFromTo(git, tagMap, start, end, tagPrefix, filter); //Get all commits between the start and the end.
49-
var logList = new ArrayList<RevCommit>(); //And generate a list from it.
50-
log.forEach(logList::add);
48+
var log = Util.toList(GitUtils.getCommitLogFromTo(git, tagMap, start, end, tagPrefix, filter)); //Get all commits between the start and the end.
49+
tagMap = Util.removePrefix(tagMap, tagPrefix); // Reassign with a new map that removes the prefix
5150

52-
var versionMap = GitUtils.buildVersionMap(logList, tagMap); //And generate a version map from this. Mapping each commit to a unique version.
53-
var primaryVersionMap = GitUtils.getPrimaryVersionMap(logList, tagMap); //Then determine which commits belong to which identifiable-version mappings.
51+
var versionMap = GitUtils.buildVersionMap(log, tagMap); //And generate a version map from this. Mapping each commit to a unique version.
52+
var primaryVersionMap = GitUtils.getPrimaryVersionMap(log, tagMap); //Then determine which commits belong to which identifiable-version mappings.
5453

5554
//Determine the length of each identifiable-versions max-length commit specific version.
5655
//(How wide does the area in-front of the commit message need to be to fit all versions in the current identifiable-version?)
@@ -68,7 +67,7 @@ static String generateChangelogFromTo(Git git, String repositoryUrl, boolean pla
6867

6968
//Loop over all commits and append their message as a changelog.
7069
//(They are already in order from newest to oldest, so that works out for us.)
71-
for (RevCommit commit : logList) {
70+
for (RevCommit commit : log) {
7271
var commitHash = commit.toObjectId().name(); //Get the commit hash, so we can look it up in maps.
7372

7473
var requiresVersionHeader = false; //Indicates later on if we need to inject a new version header.

src/main/java/net/minecraftforge/gitver/internal/Util.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import java.util.ArrayList;
1010
import java.util.Collection;
1111
import java.util.Collections;
12+
import java.util.HashMap;
13+
import java.util.Map;
1214
import java.util.function.Consumer;
1315
import java.util.function.Predicate;
1416
import java.util.function.Supplier;
@@ -30,7 +32,7 @@ static <R, E extends Throwable> R sneak(Throwable t) throws E {
3032
}
3133

3234
static String[] rsplit(String input, String del, int limit) {
33-
var list = new ArrayList<String>();
35+
var list = new ArrayList<String>(limit > 0 ? limit : input.split(del).length);
3436
int count = 0;
3537
int index;
3638

@@ -57,6 +59,22 @@ static <T> ArrayList<T> copyList(Collection<T> t, Consumer<? super ArrayList<T>>
5759
return list;
5860
}
5961

62+
static <T> ArrayList<T> toList(Iterable<T> t) {
63+
var list = new ArrayList<T>();
64+
for (var i : t) list.add(i);
65+
return list;
66+
}
67+
68+
@SuppressWarnings("unchecked")
69+
static <K, V> HashMap<K, V> removePrefix(Map<K, V> map, String prefix) {
70+
var ret = new HashMap<K, V>(map.size());
71+
map.forEach((k, v) -> ret.put(
72+
k instanceof String s && s.startsWith(prefix) ? (K) s.substring(prefix.length()) : k,
73+
v instanceof String s && s.startsWith(prefix) ? (V) s.substring(prefix.length()) : v
74+
));
75+
return ret;
76+
}
77+
6078
/**
6179
* Counts the number of elements in an iterable beginning from {@code -1}.
6280
*

0 commit comments

Comments
 (0)