Skip to content

Commit

Permalink
build: Sort AT output instead of copying and modifying AT classes
Browse files Browse the repository at this point in the history
  • Loading branch information
jpenilla committed Jan 18, 2025
1 parent ca931e8 commit d31b151
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 356 deletions.
28 changes: 25 additions & 3 deletions buildSrc/src/main/java/Aw2AtTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,17 @@
import dev.architectury.at.AccessTransform;
import dev.architectury.at.AccessTransformSet;
import dev.architectury.at.ModifierChange;
import dev.architectury.at.io.AccessTransformFormat;
import dev.architectury.at.io.AccessTransformFormats;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.List;
import javax.inject.Inject;
import net.fabricmc.accesswidener.AccessWidenerReader;
import net.fabricmc.accesswidener.AccessWidenerVisitor;
Expand Down Expand Up @@ -66,12 +72,29 @@ public void run() {
final AccessTransformSet accessTransformSet = toAccessTransformSet(reader);
Files.deleteIfExists(this.getOutputFile().get().getAsFile().toPath());
Files.createDirectories(this.getOutputFile().get().getAsFile().toPath().getParent());
AccessTransformFormats.FML.write(this.getOutputFile().get().getAsFile().toPath(), accessTransformSet);
writeLF(AccessTransformFormats.FML, this.getOutputFile().get().getAsFile().toPath(), accessTransformSet);
} catch (final IOException e) {
throw new RuntimeException(e);
}
}

private static void writeLF(final AccessTransformFormat format, final Path path, final AccessTransformSet at) throws IOException {
final StringWriter stringWriter = new StringWriter();
final BufferedWriter writer = new BufferedWriter(stringWriter);
format.write(writer, at);
writer.close();
final List<String> lines = Arrays.stream(stringWriter.toString()
// unify line endings
.replace("\r\n", "\n")
.split("\n"))
// skip blank lines
.filter(it -> !it.isBlank())
// sort
.sorted()
.toList();
Files.writeString(path, String.join("\n", lines));
}

// Below methods are heavily based on architectury-loom Aw2At class (MIT licensed)
/*
MIT License
Expand All @@ -98,8 +121,7 @@ of this software and associated documentation files (the "Software"), to deal
*/

public static AccessTransformSet toAccessTransformSet(final BufferedReader reader) throws IOException {
// TODO: Remove copied classes once https://github.com/architectury/at/pull/1 is released
AccessTransformSet atSet = new at.AccessTransformSetImpl();
AccessTransformSet atSet = AccessTransformSet.create();

new AccessWidenerReader(new AccessWidenerVisitor() {
@Override
Expand Down
97 changes: 0 additions & 97 deletions buildSrc/src/main/java/at/AccessTransformSetImpl.java

This file was deleted.

Loading

0 comments on commit d31b151

Please sign in to comment.