Skip to content

Commit 1d3071b

Browse files
committed
Update HashUtils, Centralize creation of HashStore. Fix listLibraries cache inputs
1 parent 23f7db5 commit 1d3071b

File tree

19 files changed

+152
-115
lines changed

19 files changed

+152
-115
lines changed

settings.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ dependencyResolutionManagement.versionCatalogs.register('libs') {
4040
// Utilities
4141
library 'utils-download', 'net.minecraftforge', 'download-utils' version '0.4.0'
4242
library 'utils-files', 'net.minecraftforge', 'file-utils' version '0.3.3'
43-
library 'utils-hash', 'net.minecraftforge', 'hash-utils' version '0.1.13'
43+
library 'utils-hash', 'net.minecraftforge', 'hash-utils' version '0.2.1'
4444
library 'utils-data', 'net.minecraftforge', 'json-data-utils' version '0.4.3'
4545
library 'utils-logging', 'net.minecraftforge', 'log-utils' version '0.5.1'
4646
library 'utils-os', 'net.minecraftforge', 'os-utils' version '0.1.0'

src/main/java/net/minecraftforge/mcmaven/cli/MCPTask.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import net.minecraftforge.mcmaven.impl.util.Util;
2424
import net.minecraftforge.util.data.json.JsonData;
2525
import net.minecraftforge.util.hash.HashFunction;
26-
import net.minecraftforge.util.hash.HashStore;
2726
import static net.minecraftforge.mcmaven.impl.Mavenizer.LOGGER;
2827

2928
import net.minecraftforge.util.logging.Logger;
@@ -165,7 +164,7 @@ static OptionParser run(String[] args, boolean getParser) throws Exception {
165164

166165
if (options.has(rawO)) {
167166
var searge = options.has(seargeO);
168-
var cache = HashStore.fromFile(output)
167+
var cache = Util.cache(output)
169168
.addKnown("obfuscation", searge ? "srg" : "notch");
170169

171170
Task rawTask = searge ? side.getTasks().getSrgJar() : side.getTasks().getRawJar();
@@ -197,7 +196,7 @@ static OptionParser run(String[] args, boolean getParser) throws Exception {
197196
var sourcesTask = side.getSources();
198197

199198
if (ats != null || sas != null) {
200-
var hash = Util.hash(HashFunction.SHA1, ats, sas);
199+
var hash = Util.hash(HashFunction.sha1(), ats, sas);
201200
var dir = new File(side.getBuildFolder(), hash);
202201

203202
var predecomp = side.getTasks().getPreDecompile();
@@ -226,7 +225,7 @@ static OptionParser run(String[] args, boolean getParser) throws Exception {
226225
}
227226
}
228227

229-
var cache = HashStore.fromFile(output)
228+
var cache = Util.cache(output)
230229
.add("sources", sources);
231230

232231
if (options.has(mappingsO)) {

src/main/java/net/minecraftforge/mcmaven/impl/MinecraftMaven.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import net.minecraftforge.srgutils.MinecraftVersion;
2424
import net.minecraftforge.util.data.json.JsonData;
2525
import net.minecraftforge.util.file.FileUtils;
26-
import net.minecraftforge.util.hash.HashStore;
2726
import net.minecraftforge.util.hash.HashUtils;
2827
import static net.minecraftforge.mcmaven.impl.Mavenizer.LOGGER;
2928

@@ -320,7 +319,7 @@ protected void finalize(Artifact module, Mappings mappings, List<Repo.PendingArt
320319
var varTarget = new File(this.output, artifact.getLocalPath() + ".variants");
321320
if (!disableGradle && pending.variants() != null) {
322321
var source = pending.variants().execute();
323-
var cache = HashStore.fromFile(varTarget)
322+
var cache = Util.cache(varTarget)
324323
.add("source", source);
325324

326325
if (!Mavenizer.checkCache(varTarget, cache)) {
@@ -366,7 +365,7 @@ private void updateFile(File target, File source, Artifact artifact) {
366365
}
367366
}
368367

369-
var cache = HashStore.fromFile(target)
368+
var cache = Util.cache(target)
370369
.add("source", source);
371370

372371
var isPom = "pom".equals(artifact.getExtension());
@@ -398,7 +397,7 @@ private void updateFile(File target, File source, Artifact artifact) {
398397

399398
private void writeStub(File target, File source, Artifact artifact) {
400399
var tool = this.cache.maven().download(Constants.STUBIFY);
401-
var cache = HashStore.fromFile(target)
400+
var cache = Util.cache(target)
402401
.add("tool", tool)
403402
.add("source", source);
404403

@@ -429,7 +428,7 @@ private void writeStub(File target, File source, Artifact artifact) {
429428

430429
private void writeAccessTransformed(File target, File source, Artifact artifact) {
431430
var tool = this.cache.maven().download(Constants.ACCESS_TRANSFORMER);
432-
var cache = HashStore.fromFile(target)
431+
var cache = Util.cache(target)
433432
.add("tool", tool)
434433
.add(accessTransformer)
435434
.add("source", source);
@@ -481,7 +480,7 @@ private void updateVariants(Artifact artifact) {
481480
}
482481

483482
var target = new File(this.output, artifact.withExtension("module").getLocalPath());
484-
var cache = HashStore.fromFile(target);
483+
var cache = Util.cache(target);
485484
for (var input : inputs) {
486485
cache.add(input);
487486
}

src/main/java/net/minecraftforge/mcmaven/impl/cache/MavenCache.java

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public sealed class MavenCache permits MinecraftMavenCache {
3333
private static final HashFunction[] DEFAULT_HASHES = {
3434
// can't use SHA256/512 as gradle doesn't always update those files. Depending on version used to publish
3535
//HashFunction.SHA256,
36-
HashFunction.SHA1
36+
HashFunction.sha1()
3737
//HashFunction.MD5
3838
};
3939

@@ -89,10 +89,10 @@ public final File getFolder() {
8989
@SuppressWarnings("JavadocDeclaration") // IOException thrown by Util.sneak
9090
public final File download(Artifact artifact) {
9191
try {
92-
if (artifact.getVersion() == null)
93-
throw new IllegalArgumentException("Can not download artifact with null version: " + artifact);
92+
if (artifact.getVersion() == null)
93+
throw new IllegalArgumentException("Can not download artifact with null version: " + artifact);
9494

95-
var resolved = resolve(artifact);
95+
var resolved = resolve(artifact);
9696
return download(false, resolved.getPath());
9797
} catch (Exception e) {
9898
if (!this.foreignRepositories.isEmpty()) {
@@ -288,41 +288,41 @@ public List<String> getVersions(Artifact artifact) {
288288
* Try and resolve dynamic versions.
289289
*/
290290
private Artifact resolve(Artifact artifact) {
291-
var version = artifact.getVersion();
292-
if (version == null)
293-
throw new IllegalArgumentException("Can not resolve null version: " + artifact);
294-
295-
if (version.endsWith("+")) {
296-
var versions = getVersions(artifact);
297-
298-
if (version.length() > 1) {
299-
var prefix = version.substring(0, version.length() - 1);
300-
for (var itr = versions.iterator(); itr.hasNext(); ) {
301-
var v = itr.next();
302-
if (!v.startsWith(prefix))
303-
itr.remove();
304-
}
305-
}
306-
307-
ComparableVersion ret = null;
308-
for (var ver : versions) {
309-
ComparableVersion comp = null;
310-
try {
311-
comp = new ComparableVersion(ver);
312-
} catch (Exception e) {
313-
LOGGER.debug("Failed to parse version " + ver + " while resolving " + artifact + ", skipping");
314-
continue;
315-
}
316-
317-
// Grab the highest version
318-
if (ret == null || ret.compareTo(comp) < 0)
319-
ret = comp;
320-
}
321-
322-
if (ret != null)
323-
artifact = artifact.withVersion(ret.toString());
324-
}
325-
326-
return artifact;
291+
var version = artifact.getVersion();
292+
if (version == null)
293+
throw new IllegalArgumentException("Can not resolve null version: " + artifact);
294+
295+
if (version.endsWith("+")) {
296+
var versions = getVersions(artifact);
297+
298+
if (version.length() > 1) {
299+
var prefix = version.substring(0, version.length() - 1);
300+
for (var itr = versions.iterator(); itr.hasNext(); ) {
301+
var v = itr.next();
302+
if (!v.startsWith(prefix))
303+
itr.remove();
304+
}
305+
}
306+
307+
ComparableVersion ret = null;
308+
for (var ver : versions) {
309+
ComparableVersion comp = null;
310+
try {
311+
comp = new ComparableVersion(ver);
312+
} catch (Exception e) {
313+
LOGGER.debug("Failed to parse version " + ver + " while resolving " + artifact + ", skipping");
314+
continue;
315+
}
316+
317+
// Grab the highest version
318+
if (ret == null || ret.compareTo(comp) < 0)
319+
ret = comp;
320+
}
321+
322+
if (ret != null)
323+
artifact = artifact.withVersion(ret.toString());
324+
}
325+
326+
return artifact;
327327
}
328328
}

src/main/java/net/minecraftforge/mcmaven/impl/cache/MinecraftMavenCache.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
public final class MinecraftMavenCache extends MavenCache {
2121
private static final HashFunction[] KNOWN_HASHES = {
2222
// Can't use MD5 or SHA256 as Mojang doesn't seem to provide them.
23-
HashFunction.SHA1
23+
HashFunction.sha1()
2424
};
2525

2626
private static final File LOCAL_MCLIBS = new File(MCJsonUtils.getMCDir(OS.current()), "libraries");

src/main/java/net/minecraftforge/mcmaven/impl/data/GradleModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ public File(String name, java.io.File file) {
199199
this.name = this.url = name;
200200
this.size = file.length();
201201
try {
202-
var hashes = HashUtils.bulkHash(file, HashFunction.SHA1, HashFunction.SHA256, HashFunction.SHA512, HashFunction.MD5);
202+
var hashes = HashUtils.bulkHash(file, HashFunction.sha1(), HashFunction.sha256(), HashFunction.sha512(), HashFunction.md5());
203203
this.sha1 = hashes[0];
204204
this.sha256 = hashes[1];
205205
this.sha512 = hashes[2];

src/main/java/net/minecraftforge/mcmaven/impl/mappings/Mappings.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import net.minecraftforge.srgutils.IMappingFile.IField;
2828
import net.minecraftforge.srgutils.IMappingFile.IMethod;
2929
import net.minecraftforge.srgutils.IMappingFile.IParameter;
30-
import net.minecraftforge.util.hash.HashStore;
3130
import org.jetbrains.annotations.Nullable;
3231

3332
import de.siegmar.fastcsv.reader.CsvReader;
@@ -199,7 +198,7 @@ private File getMappings(MCPSide side, Task srgMappings, Task clientTask, Task s
199198
var client = clientTask.execute();
200199
var server = serverTask.execute();
201200

202-
var cache = HashStore.fromFile(output);
201+
var cache = Util.cache(output);
203202
cache.add("tool", tool);
204203
cache.add("mappings", mappings);
205204
cache.add("client", client);
@@ -243,7 +242,7 @@ private File makeTsrg(MCPSide side, Task srgTask, Task csvTask, boolean toObf) {
243242
var srg = srgTask.execute();
244243
var csv = csvTask.execute();
245244

246-
var cache = HashStore.fromFile(output)
245+
var cache = Util.cache(output)
247246
.add("srg", srg)
248247
.add("csv", csv);
249248

src/main/java/net/minecraftforge/mcmaven/impl/mappings/ParchmentMappings.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import net.minecraftforge.mcmaven.impl.util.Util;
3333
import net.minecraftforge.srgutils.IMappingFile;
3434
import net.minecraftforge.util.file.FileUtils;
35-
import net.minecraftforge.util.hash.HashStore;
3635

3736
public class ParchmentMappings extends Mappings {
3837
private final ParchmentVersion parsedVersion;
@@ -113,7 +112,7 @@ private File getMappings(MCP mcp, Task srgTask, Task clientTask, Task serverTask
113112

114113
var root = getFolder(new File(mcp.getBuildFolder(), "data/mapings"));
115114
var output = new File(root, "parchment-" + version() + ".zip");
116-
var cache = HashStore.fromFile(output)
115+
var cache = Util.cache(output)
117116
.add("srg", srg)
118117
.add("client", client)
119118
.add("server", server)

src/main/java/net/minecraftforge/mcmaven/impl/repo/Repo.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616
import net.minecraftforge.mcmaven.impl.util.Util;
1717
import net.minecraftforge.util.data.json.JsonData;
1818
import net.minecraftforge.util.file.FileUtils;
19-
import net.minecraftforge.util.hash.HashStore;
2019

2120
import static net.minecraftforge.mcmaven.impl.Mavenizer.LOGGER;
2221

2322
import java.io.File;
2423
import java.io.FileOutputStream;
2524
import java.io.IOException;
2625
import java.nio.charset.StandardCharsets;
26+
import java.nio.file.Files;
2727
import java.util.ArrayList;
2828
import java.util.Collection;
2929
import java.util.EnumSet;
@@ -91,9 +91,17 @@ protected static Task variantTask(Task parent, Supplier<GradleModule.Variant[]>
9191
var variants = supplier.get();
9292

9393
var variantFile = new File(parent.execute().getAbsolutePath() + ".variants");
94+
var json = JsonData.toJson(variants);
95+
var cache = Util.cache(variantFile)
96+
.add("data", json);
97+
98+
if (Mavenizer.checkCache(variantFile, cache))
99+
return variantFile;
100+
94101
try {
95102
FileUtils.ensureParent(variantFile);
96-
JsonData.toJson(variants, variantFile);
103+
Files.writeString(variantFile.toPath(), json, StandardCharsets.UTF_8);
104+
cache.save();
97105
} catch (Throwable t) {
98106
throw new RuntimeException("Failed to write artifact variants: %s".formatted(variantFile), t);
99107
}
@@ -192,7 +200,7 @@ protected GradleModule.Variant[] classVariants(Mappings mappings, MCPSide side,
192200
protected static Task simplePom(File build, Artifact artifact) {
193201
return Task.named("pom[" + artifact.getName() + ']', () -> {
194202
var output = new File(build, artifact.getName() + '-' + artifact.getVersion() + ".pom");
195-
var cache = HashStore.fromFile(output);
203+
var cache = Util.cache(output);
196204
if (Mavenizer.checkCache(output, cache))
197205
return output;
198206

src/main/java/net/minecraftforge/mcmaven/impl/repo/forge/ForgeRepo.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import net.minecraftforge.mcmaven.impl.util.Util;
2424
import net.minecraftforge.util.data.json.JsonData;
2525
import net.minecraftforge.util.file.FileUtils;
26-
import net.minecraftforge.util.hash.HashStore;
2726

2827
import static net.minecraftforge.mcmaven.impl.Mavenizer.LOGGER;
2928

@@ -226,8 +225,7 @@ private static Task metadata(File build, Patcher patcher) {
226225
var minecraftDir = new File(metadataDir, "minecraft");
227226
var versionJson = patcher.getMCP().getMinecraftTasks().versionJson.execute();
228227

229-
var cache = HashStore
230-
.fromFile(output)
228+
var cache = Util.cache(output)
231229
.add(versionJson)
232230
.add(versionProperties)
233231
.add("data", patcher.getDataHash())
@@ -276,7 +274,7 @@ private static Task metadata(File build, Patcher patcher) {
276274
private static Task pom(File build, Patcher patcher, String version, Artifact clientExtra, Artifact mappings) {
277275
return Task.named("pom[forge]", () -> {
278276
var output = new File(build, "forge.pom");
279-
var cache = HashStore.fromFile(output)
277+
var cache = Util.cache(output)
280278
.addKnown("data", patcher.getDataHash())
281279
.addKnown("extra", Util.replace(clientExtra, Object::toString))
282280
.addKnown("mappings", Util.replace(mappings, Object::toString))

0 commit comments

Comments
 (0)