Skip to content
This repository was archived by the owner on Sep 5, 2023. It is now read-only.

Commit

Permalink
Fix stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
maximumpower55 committed May 6, 2022
1 parent 4bdca6f commit 0e8016a
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 8 deletions.
6 changes: 0 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,3 @@ jobs:

- name: Build with Brachyura
run: java -jar brachyura-bootstrap-0.jar build

- name: Upload build Artifacts
uses: actions/upload-artifact@v2
with:
name: Artifacts
path: build/libs/
4 changes: 2 additions & 2 deletions brachyurabootstrapconf.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ https://github.com/CoolCrabs/brachyura/releases/download/v_d6a9697b81915b2ebedd7
https://github.com/CoolCrabs/brachyura/releases/download/v_d6a9697b81915b2ebedd77aacbe6afe0d4665dfb/cfr-0.6-sources.jar 7DC3AED92A0A7FF8911AD767E6098970CA1AE605 cfr-0.6-sources.jar false
https://github.com/CoolCrabs/brachyura/releases/download/v_d6a9697b81915b2ebedd77aacbe6afe0d4665dfb/brachyura-0.81.jar E48D62F30B81F37E98C03E28FABE1B7CC3087F31 brachyura-0.81.jar true
https://github.com/CoolCrabs/brachyura/releases/download/v_d6a9697b81915b2ebedd77aacbe6afe0d4665dfb/brachyura-0.81-sources.jar 05D291835873127A6E07D4C16D04730CCA7883D2 brachyura-0.81-sources.jar false
https://github.com/CoolCrabs/brachyura/releases/download/v_d6a9697b81915b2ebedd77aacbe6afe0d4665dfb/brachyura-mixin-compile-extensions-0.9.jar 729423E90A3FBB7C82047FA7EC47A2FF1A3D03A9 brachyura-mixin-compile-extensions-0.9.jar true
https://github.com/CoolCrabs/brachyura/releases/download/v_d6a9697b81915b2ebedd77aacbe6afe0d4665dfb/brachyura-mixin-compile-extensions-0.9-sources.jar A297FAB3C006004DDFC52E10A725030F3F1DB583 brachyura-mixin-compile-extensions-0.9-sources.jar false
https://github.com/CoolCrabs/brachyura/releases/download/v_1bb0c340dbef93e3ba323f67b1131bf3bf96dcbf/brachyura-mixin-compile-extensions-0.10.jar 1F6886F5242A4BE5C2587ABA77ECFD7ABDE118E0 brachyura-mixin-compile-extensions-0.10.jar true
https://github.com/CoolCrabs/brachyura/releases/download/v_1bb0c340dbef93e3ba323f67b1131bf3bf96dcbf/brachyura-mixin-compile-extensions-0.10-sources.jar FAB240EB77608DF50228008A4FA34FEDBB209B59 brachyura-mixin-compile-extensions-0.10-sources.jar false
https://github.com/CoolCrabs/brachyura/releases/download/v_d6a9697b81915b2ebedd77aacbe6afe0d4665dfb/trieharder-0.2.0.jar 0C66AA7223910600732B1ECBD235F6519BC9D454 trieharder-0.2.0.jar true
https://github.com/CoolCrabs/brachyura/releases/download/v_d6a9697b81915b2ebedd77aacbe6afe0d4665dfb/trieharder-0.2.0-sources.jar D7735F8EA6D98502EA67BEE70C2E69E982823450 trieharder-0.2.0-sources.jar false
https://github.com/CoolCrabs/brachyura/releases/download/v_d6a9697b81915b2ebedd77aacbe6afe0d4665dfb/fernutil-0.2.jar 02F6B2E641C53DADD939D27F50472C6E9CED3D07 fernutil-0.2.jar true
Expand Down
94 changes: 94 additions & 0 deletions buildscript/src/main/java/Buildscript.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UncheckedIOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import java.util.zip.ZipFile;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;

import org.jetbrains.annotations.Nullable;

Expand All @@ -15,20 +26,30 @@
import io.github.coolcrabs.brachyura.dependency.JavaJarDependency;
import io.github.coolcrabs.brachyura.fabric.FabricContext.ModDependencyCollector;
import io.github.coolcrabs.brachyura.fabric.FabricContext.ModDependencyFlag;
import io.github.coolcrabs.brachyura.fabric.AccessWidenerRemapper;
import io.github.coolcrabs.brachyura.fabric.FabricContext;
import io.github.coolcrabs.brachyura.fabric.FabricLoader;
import io.github.coolcrabs.brachyura.ide.IdeModule;
import io.github.coolcrabs.brachyura.mappings.Namespaces;
import io.github.coolcrabs.brachyura.maven.MavenId;
import io.github.coolcrabs.brachyura.maven.Maven;
import io.github.coolcrabs.brachyura.minecraft.Minecraft;
import io.github.coolcrabs.brachyura.minecraft.VersionMeta;
import io.github.coolcrabs.brachyura.processing.ProcessingEntry;
import io.github.coolcrabs.brachyura.processing.ProcessingId;
import io.github.coolcrabs.brachyura.processing.ProcessingSink;
import io.github.coolcrabs.brachyura.processing.ProcessorChain;
import io.github.coolcrabs.brachyura.processing.sinks.AtomicZipProcessingSink;
import io.github.coolcrabs.brachyura.processing.sources.ZipProcessingSource;
import io.github.coolcrabs.brachyura.project.java.BuildModule;
import io.github.coolcrabs.brachyura.quilt.QuiltContext;
import io.github.coolcrabs.brachyura.quilt.QuiltMaven;
import io.github.coolcrabs.brachyura.quilt.QuiltModule;
import io.github.coolcrabs.brachyura.quilt.SimpleQuiltProject;
import io.github.coolcrabs.brachyura.util.GsonUtil;
import io.github.coolcrabs.brachyura.util.Lazy;
import io.github.coolcrabs.brachyura.util.PathUtil;
import io.github.coolcrabs.brachyura.util.Util;
import net.fabricmc.accesswidener.AccessWidenerReader;
import net.fabricmc.accesswidener.AccessWidenerVisitor;
import net.fabricmc.mappingio.tree.MappingTree;
Expand Down Expand Up @@ -107,6 +128,79 @@ public Path getBuildJarPath() {
return getBuildLibsDir().resolve(String.format("%s-mc-%s-%s.jar", getModId(), createMcVersion().version, getVersion()));
}

@Override
protected FabricContext createContext() {
return new SimpleQuiltContext() {
@Override
public ProcessorChain resourcesProcessingChain(List<JavaJarDependency> jij) {
Path fmjgen = getLocalBrachyuraPath().resolve("fmjgen");
if (Files.exists(fmjgen)) PathUtil.deleteDirectory(fmjgen);
List<Path> jij2 = new ArrayList<>();
for (JavaJarDependency mod : jij) {
try {
try (ZipFile f = new ZipFile(mod.jar.toFile())) {
if (f.getEntry("fabric.mod.json") == null && f.getEntry("quilt.mod.json") == null) {
Path p = fmjgen.resolve(mod.jar.getFileName());
try (
ZipProcessingSource s = new ZipProcessingSource(mod.jar);
AtomicZipProcessingSink sink = new AtomicZipProcessingSink(p)
) {
new ProcessorChain(new FmjGenerator(Collections.singletonMap(s, mod.mavenId))).apply(sink, s);
sink.commit();
}
jij2.add(p);
} else {
jij2.add(mod.jar);
}
}
} catch (Exception e) {
throw Util.sneak(e);
}
}
return new ProcessorChain(QmjRefmapApplier.INSTANCE, new FixedQmjJijApplier(jij2), new AccessWidenerRemapper(mappings.get(), mappings.get().getNamespaceId(Namespaces.INTERMEDIARY), QuiltAwCollector.INSTANCE));
}

class FixedQmjJijApplier extends QmjJijApplier {
final List<Path> jij;

public FixedQmjJijApplier(List<Path> jij) {
super(jij);
this.jij = jij;
}

@Override
public void process(Collection<ProcessingEntry> inputs, ProcessingSink sink) throws IOException {
for (ProcessingEntry e : inputs) {
if (!jij.isEmpty() && "quilt.mod.json".equals(e.id.path)) {
Gson gson = new GsonBuilder().setPrettyPrinting().setLenient().create();
JsonObject quiltModJson;
try (BufferedReader reader = new BufferedReader(new InputStreamReader(e.in.get(), StandardCharsets.UTF_8))) {
quiltModJson = gson.fromJson(reader, JsonObject.class);
}
JsonArray jars = new JsonArray();
quiltModJson.getAsJsonObject("quilt_loader").add("jars", jars);
List<String> used = new ArrayList<>();
for (Path jar : jij) {
String path = "META-INF/jars/" + jar.getFileName();
int a = 0;
while (used.contains(path)) {
path = "META-INF/jars/" + a + jar.getFileName();
a++;
}
jars.add(path);
used.add(path);
sink.sink(() -> PathUtil.inputStream(jar), new ProcessingId(path, e.id.source));
}
sink.sink(() -> GsonUtil.toIs(quiltModJson, gson), e.id);
} else {
sink.sink(e.in, e.id);
}
}
}
}
};
}

@Override
protected QuiltModule createModule() {
return new SimpleQuiltModule((QuiltContext)context.get()) {
Expand Down

0 comments on commit 0e8016a

Please sign in to comment.