Skip to content

Commit faa6d43

Browse files
committed
transforming is real
1 parent 5bd43a1 commit faa6d43

21 files changed

+268
-104
lines changed

build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ val mc by minecraft.creating {
2424
dependencies {
2525
implementation(mc.dependency)
2626

27-
// mc.transformer(fileTree("src/main/resources/transformers"))
27+
mc.transformers.mod(files("src/main/resources"))
28+
// mc.transformers.namespaced("testmod")(files("src/main/resources/transformers"))
2829

2930
compileOnly(cichlid.api("0.3.2"))
3031
cichlidRuntime(cichlid.runtime("0.3.2"))

plugin/src/main/java/fish/cichlidmc/cichlid_gradle/cache/Transformers.java

Lines changed: 0 additions & 6 deletions
This file was deleted.

plugin/src/main/java/fish/cichlidmc/cichlid_gradle/cache/mcmaven/MinecraftMaven.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
import fish.cichlidmc.cichlid_gradle.cache.Artifact;
44
import fish.cichlidmc.cichlid_gradle.cache.CichlidCache;
55
import fish.cichlidmc.cichlid_gradle.cache.ManifestCache;
6-
import fish.cichlidmc.cichlid_gradle.cache.Transformers;
76
import fish.cichlidmc.cichlid_gradle.cache.task.CacheTaskEnvironment;
87
import fish.cichlidmc.cichlid_gradle.cache.task.impl.AssetsTask;
98
import fish.cichlidmc.cichlid_gradle.cache.task.impl.ReassembleBinaryTask;
109
import fish.cichlidmc.cichlid_gradle.cache.task.impl.ReassembleSourcesTask;
1110
import fish.cichlidmc.cichlid_gradle.extension.def.MinecraftDefinition;
1211
import fish.cichlidmc.cichlid_gradle.extension.def.MinecraftDefinitionImpl;
12+
import fish.cichlidmc.cichlid_gradle.extension.def.TransformersImpl;
1313
import fish.cichlidmc.cichlid_gradle.util.Distribution;
1414
import fish.cichlidmc.cichlid_gradle.util.hash.Encoding;
1515
import fish.cichlidmc.cichlid_gradle.util.hash.HashAlgorithm;
@@ -23,7 +23,6 @@
2323
import org.jetbrains.annotations.Nullable;
2424

2525
import java.io.ByteArrayInputStream;
26-
import java.io.File;
2726
import java.io.IOException;
2827
import java.io.InputStream;
2928
import java.net.URI;
@@ -73,10 +72,7 @@ public InputStream get(URI uri) throws IOException {
7372

7473
String version = def.version();
7574

76-
Iterable<File> transformerFiles = def.resolvableTransformers().getIncoming().getFiles();
77-
Transformers transformers = new Transformers(transformerFiles, request.hash);
78-
79-
InputStream stream = this.getArtifact(version, def.dist(), transformers, request);
75+
InputStream stream = this.getArtifact(version, def.dist(), def.getTransformers(), request);
8076
if (stream == null || request.hashAlgorithm.isEmpty())
8177
return stream;
8278

@@ -85,9 +81,8 @@ public InputStream get(URI uri) throws IOException {
8581
return new ByteArrayInputStream(hash.getBytes(StandardCharsets.UTF_8));
8682
}
8783

88-
8984
@Nullable
90-
private InputStream getArtifact(String versionId, Distribution dist, Transformers transformers, Request request) throws IOException {
85+
private InputStream getArtifact(String versionId, Distribution dist, TransformersImpl transformers, Request request) throws IOException {
9186
// see if this version actually exists
9287
Version version = ManifestCache.getVersion(versionId);
9388
if (version == null) {
@@ -111,14 +106,14 @@ private InputStream getArtifact(String versionId, Distribution dist, Transformer
111106
}
112107

113108
boolean needsAssets = dist.needsAssets() && !this.cache.assets.isComplete(fullVersion.assetIndex);
114-
Path jar = this.cache.reassembledJars.get(versionId, transformers.hash(), dist, request.artifact);
109+
Path jar = this.cache.reassembledJars.get(versionId, request.hash, dist, request.artifact);
115110
boolean needsJar = !Files.exists(jar);
116111

117112
if (!needsAssets && !needsJar) {
118113
return Files.newInputStream(jar);
119114
}
120115

121-
CacheTaskEnvironment.Builder builder = new CacheTaskEnvironment.Builder(fullVersion, this.cache, dist, transformers);
116+
CacheTaskEnvironment.Builder builder = new CacheTaskEnvironment.Builder(request.hash, fullVersion, this.cache, dist, transformers);
122117

123118
if (needsAssets) {
124119
builder.add(AssetsTask::new);

plugin/src/main/java/fish/cichlidmc/cichlid_gradle/cache/storage/ReassembledJarStorage.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,27 @@ public ReassembledJarStorage(Path root) {
1212
this.root = root;
1313
}
1414

15-
public Path get(String version, String transformersHash, Distribution dist, Artifact artifact) {
15+
public Path get(String version, String defHash, Distribution dist, Artifact artifact) {
1616
return switch (artifact) {
17-
case JAR -> this.binary(version, transformersHash, dist);
18-
case SOURCES -> this.sources(version, transformersHash, dist);
17+
case JAR -> this.binary(version, defHash, dist);
18+
case SOURCES -> this.sources(version, defHash, dist);
1919
case POM -> throw new IllegalArgumentException("poms are not jars");
2020
};
2121
}
2222

23-
public Path get(String version, String transformersHash, Distribution dist, boolean sources) {
24-
return sources ? this.sources(version, transformersHash, dist) : this.binary(version, transformersHash, dist);
23+
public Path get(String version, String defHash, Distribution dist, boolean sources) {
24+
return sources ? this.sources(version, defHash, dist) : this.binary(version, defHash, dist);
2525
}
2626

27-
public Path binary(String version, String transformersHash, Distribution dist) {
28-
return this.path(version, transformersHash, dist, "binary");
27+
public Path binary(String version, String defHash, Distribution dist) {
28+
return this.path(version, defHash, dist, "binary");
2929
}
3030

31-
public Path sources(String version, String transformersHash, Distribution dist) {
32-
return this.path(version, transformersHash, dist, "sources");
31+
public Path sources(String version, String defHash, Distribution dist) {
32+
return this.path(version, defHash, dist, "sources");
3333
}
3434

35-
private Path path(String version, String transformersHash, Distribution dist, String name) {
36-
return this.root.resolve(version).resolve(dist.name).resolve(transformersHash).resolve(name + ".jar");
35+
private Path path(String version, String defHash, Distribution dist, String name) {
36+
return this.root.resolve(version).resolve(dist.name).resolve(defHash).resolve(name + ".jar");
3737
}
3838
}

plugin/src/main/java/fish/cichlidmc/cichlid_gradle/cache/storage/TransformedClassStorage.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public TransformedClassStorage(Path root) {
99
this.root = root;
1010
}
1111

12-
public Path get(String transformersHash, String bytecodeHash) {
13-
return this.root.resolve(transformersHash).resolve(bytecodeHash + ".class");
12+
public Path get(String defHash, String bytecodeHash) {
13+
return this.root.resolve(defHash).resolve(bytecodeHash + ".class");
1414
}
1515
}

plugin/src/main/java/fish/cichlidmc/cichlid_gradle/cache/task/CacheTaskEnvironment.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package fish.cichlidmc.cichlid_gradle.cache.task;
22

33
import fish.cichlidmc.cichlid_gradle.cache.CichlidCache;
4-
import fish.cichlidmc.cichlid_gradle.cache.Transformers;
4+
import fish.cichlidmc.cichlid_gradle.extension.def.TransformersImpl;
55
import fish.cichlidmc.cichlid_gradle.util.Distribution;
66
import fish.cichlidmc.pistonmetaparser.FullVersion;
77
import fish.cichlidmc.tinycodecs.util.Either;
@@ -21,22 +21,28 @@
2121
public class CacheTaskEnvironment {
2222
private static final Logger logger = Logging.getLogger(CacheTaskEnvironment.class);
2323

24+
public final String hash;
2425
public final FullVersion version;
2526
public final CichlidCache cache;
2627
public final Distribution dist;
27-
public final Transformers transformers;
28+
public final TransformersImpl transformers;
2829

2930
private final Map<CacheTask.Runner, CompletableFuture<Void>> futures = Collections.synchronizedMap(new IdentityHashMap<>());
3031
private final Set<CacheTask.Runner> incompleteTasks = Collections.synchronizedSet(new HashSet<>());
3132
private final Map<CacheTask.Runner, Throwable> errors = Collections.synchronizedMap(new IdentityHashMap<>());
3233

33-
public CacheTaskEnvironment(FullVersion version, CichlidCache cache, Distribution dist, Transformers transformers) {
34+
public CacheTaskEnvironment(String hash, FullVersion version, CichlidCache cache, Distribution dist, TransformersImpl transformers) {
35+
this.hash = hash;
3436
this.version = version;
3537
this.cache = cache;
3638
this.dist = dist;
3739
this.transformers = transformers;
3840
}
3941

42+
public CacheTaskEnvironment withDist(Distribution dist) {
43+
return this.dist == dist ? this : new CacheTaskEnvironment(this.hash, this.version, this.cache, dist, this.transformers);
44+
}
45+
4046
public void submitAndAwait(TaskFactory factory) {
4147
this.submit(factory).join();
4248
}
@@ -113,13 +119,15 @@ public interface TaskFactory {
113119
}
114120

115121
public static final class Builder {
122+
private final String hash;
116123
private final FullVersion version;
117124
private final CichlidCache cache;
118125
private final Distribution dist;
119-
private final Transformers transformers;
126+
private final TransformersImpl transformers;
120127
private final List<TaskFactory> factories;
121128

122-
public Builder(FullVersion version, CichlidCache cache, Distribution dist, Transformers transformers) {
129+
public Builder(String hash, FullVersion version, CichlidCache cache, Distribution dist, TransformersImpl transformers) {
130+
this.hash = hash;
123131
this.version = version;
124132
this.cache = cache;
125133
this.dist = dist;
@@ -133,7 +141,7 @@ public void add(TaskFactory factory) {
133141

134142
public CacheTaskEnvironment start() {
135143
logger.quiet("Starting {} cache task(s)...", this.factories.size());
136-
CacheTaskEnvironment env = new CacheTaskEnvironment(this.version, this.cache, this.dist, this.transformers);
144+
CacheTaskEnvironment env = new CacheTaskEnvironment(this.hash, this.version, this.cache, this.dist, this.transformers);
137145
this.factories.forEach(env::submit);
138146
return env;
139147
}

plugin/src/main/java/fish/cichlidmc/cichlid_gradle/cache/task/impl/DecompileTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public DecompileTask(CacheTaskEnvironment env) {
3434

3535
@Override
3636
protected String run() throws FileNotFoundException {
37-
Path input = this.env.cache.reassembledJars.binary(this.env.version.id, this.env.transformers.hash(), this.env.dist);
37+
Path input = this.env.cache.reassembledJars.binary(this.env.version.id, this.env.hash, this.env.dist);
3838

3939
if (!Files.exists(input)) {
4040
this.env.submitAndAwait(ReassembleBinaryTask::new);

plugin/src/main/java/fish/cichlidmc/cichlid_gradle/cache/task/impl/MergeTask.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ protected String run() throws IOException {
3838
};
3939

4040
if (distribution != null) {
41-
CacheTaskEnvironment env = this.environmentFor(distribution);
41+
CacheTaskEnvironment env = this.env.withDist(distribution);
4242
futures.add(env.submit(SetupTask::new).thenApply($ -> MergeSource.createUnchecked(dist, jar)));
4343
}
4444
}
@@ -48,12 +48,4 @@ protected String run() throws IOException {
4848
JarMerger.merge(sources, jars.get(Distribution.MERGED));
4949
return null;
5050
}
51-
52-
private CacheTaskEnvironment environmentFor(Distribution dist) {
53-
if (this.env.dist == dist) {
54-
return this.env;
55-
} else {
56-
return new CacheTaskEnvironment(this.env.version, this.env.cache, dist, this.env.transformers);
57-
}
58-
}
5951
}

plugin/src/main/java/fish/cichlidmc/cichlid_gradle/cache/task/impl/ReassembleBinaryTask.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ protected String run() throws IOException {
2828
}
2929

3030
FileUtils.assertExists(input);
31-
Path output = this.env.cache.reassembledJars.binary(this.env.version.id, this.env.transformers.hash(), this.env.dist);
31+
Path output = this.env.cache.reassembledJars.binary(this.env.version.id, this.env.hash, this.env.dist);
3232

3333
JarProcessor.run(input, output, this::transform);
3434
return null;
@@ -43,7 +43,7 @@ private JarProcessor.ClassEntry transform(JarProcessor.ClassEntry entry) throws
4343
return entry;
4444

4545
String bytecodeHash = Encoding.BASE_FUNNY.encode(HashAlgorithm.SHA256.hash(entry.content()));
46-
Path transformed = this.env.cache.transformedClasses.get(this.env.transformers.hash(), bytecodeHash);
46+
Path transformed = this.env.cache.transformedClasses.get(this.env.hash, bytecodeHash);
4747

4848
if (!Files.exists(transformed)) {
4949
if (this.ranTransform) {

plugin/src/main/java/fish/cichlidmc/cichlid_gradle/cache/task/impl/ReassembleSourcesTask.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ public ReassembleSourcesTask(CacheTaskEnvironment env) {
1818

1919
@Override
2020
protected String run() throws IOException {
21-
Path output = this.env.cache.reassembledJars.sources(this.env.version.id, this.env.transformers.hash(), this.env.dist);
22-
Path binary = this.env.cache.reassembledJars.binary(this.env.version.id, this.env.transformers.hash(), this.env.dist);
21+
Path output = this.env.cache.reassembledJars.sources(this.env.version.id, this.env.hash, this.env.dist);
22+
Path binary = this.env.cache.reassembledJars.binary(this.env.version.id, this.env.hash, this.env.dist);
2323
if (!Files.exists(binary)) {
2424
// reassemble the binary and wait for it
2525
this.env.submitAndAwait(ReassembleBinaryTask::new);

0 commit comments

Comments
 (0)