diff --git a/build-logic/src/main/java/org/spongepowered/gradle/impl/ConvertAWToAT.java b/build-logic/src/main/java/org/spongepowered/gradle/impl/AWToAT.java similarity index 72% rename from build-logic/src/main/java/org/spongepowered/gradle/impl/ConvertAWToAT.java rename to build-logic/src/main/java/org/spongepowered/gradle/impl/AWToAT.java index d3f1e05193d..da782c13dc6 100644 --- a/build-logic/src/main/java/org/spongepowered/gradle/impl/ConvertAWToAT.java +++ b/build-logic/src/main/java/org/spongepowered/gradle/impl/AWToAT.java @@ -32,43 +32,27 @@ import net.fabricmc.accesswidener.AccessWidenerReader; import net.fabricmc.accesswidener.AccessWidenerVisitor; import org.cadixdev.bombe.type.signature.MethodSignature; -import org.gradle.api.DefaultTask; import org.gradle.api.GradleException; -import org.gradle.api.file.ConfigurableFileCollection; -import org.gradle.api.file.RegularFileProperty; -import org.gradle.api.tasks.InputFiles; -import org.gradle.api.tasks.OutputFile; -import org.gradle.api.tasks.TaskAction; +import org.gradle.api.logging.Logger; +import org.gradle.api.logging.Logging; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.nio.file.Files; -import java.util.Set; -public abstract class ConvertAWToAT extends DefaultTask { +public class AWToAT { + private static final Logger logger = Logging.getLogger(AWToAT.class); - @InputFiles - public abstract ConfigurableFileCollection getAccessWideners(); - - public void accessWideners(Object... paths) { - this.getAccessWideners().from(paths); - } - - @OutputFile - public abstract RegularFileProperty getAccessTransformer(); - - @TaskAction - public void convert() { - final Set awFiles = this.getAccessWideners().getFiles(); - final File atFile = this.getAccessTransformer().get().getAsFile(); + public static void convert(final Iterable awFiles, final File atFile) { + AWToAT.logger.lifecycle("Converting AWs {} to AT {} ...", awFiles, atFile); final AccessTransformSet at = AccessTransformSet.create(); for (final File awFile : awFiles) { try (final BufferedReader reader = Files.newBufferedReader(awFile.toPath())) { - ConvertAWToAT.convert(reader, at); + AWToAT.convert(reader, at); } catch (final IOException e) { throw new GradleException("Failed to read access widener: " + awFile, e); } @@ -79,28 +63,30 @@ public void convert() { } catch (IOException e) { throw new GradleException("Failed to write access transformer: " + atFile, e); } + + AWToAT.logger.lifecycle("Converted AWs to AT."); } - public static void convert(final BufferedReader reader, final AccessTransformSet at) throws IOException { + private static void convert(final BufferedReader reader, final AccessTransformSet at) throws IOException { new AccessWidenerReader(new AccessWidenerVisitor() { @Override public void visitClass(final String name, final AccessWidenerReader.AccessType access, final boolean transitive) { - at.getOrCreateClass(name).merge(ConvertAWToAT.convertEntry(access)); + at.getOrCreateClass(name).merge(AWToAT.convertEntry(access)); } @Override public void visitMethod(final String owner, final String name, final String descriptor, final AccessWidenerReader.AccessType access, final boolean transitive) { - at.getOrCreateClass(owner).mergeMethod(MethodSignature.of(name, descriptor), ConvertAWToAT.convertEntry(access)); + at.getOrCreateClass(owner).mergeMethod(MethodSignature.of(name, descriptor), AWToAT.convertEntry(access)); } @Override public void visitField(final String owner, final String name, final String descriptor, final AccessWidenerReader.AccessType access, final boolean transitive) { - at.getOrCreateClass(owner).mergeField(name, ConvertAWToAT.convertEntry(access)); + at.getOrCreateClass(owner).mergeField(name, AWToAT.convertEntry(access)); } }).read(reader); } - public static AccessTransform convertEntry(final AccessWidenerReader.AccessType access) { + private static AccessTransform convertEntry(final AccessWidenerReader.AccessType access) { return switch (access) { case ACCESSIBLE -> AccessTransform.of(AccessChange.PUBLIC); case EXTENDABLE, MUTABLE -> AccessTransform.of(AccessChange.PUBLIC, ModifierChange.REMOVE); diff --git a/forge/build.gradle.kts b/forge/build.gradle.kts index c973f13168e..34ba73d2a51 100644 --- a/forge/build.gradle.kts +++ b/forge/build.gradle.kts @@ -1,6 +1,6 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import net.minecraftforge.gradle.userdev.UserDevExtension -import org.spongepowered.gradle.impl.ConvertAWToAT +import org.spongepowered.gradle.impl.AWToAT buildscript { repositories { @@ -206,18 +206,15 @@ dependencies { } } -val convertAWToAT = tasks.register("convertAWToAT", ConvertAWToAT::class) { - accessWideners(main.get().resources.filter { it.name.endsWith(".accesswidener") }) - accessWideners(forgeMain.resources.filter { it.name.endsWith(".accesswidener") }) - accessTransformer.set(project.layout.buildDirectory.file("generated/resources/at.cfg")) -} +val awFiles: Set = files(main.get().resources, forgeMain.resources).filter { it.name.endsWith(".accesswidener") }.files +val atFile = project.layout.buildDirectory.file("generated/resources/at.cfg").get().asFile +AWToAT.convert(awFiles, atFile) val mixinConfigs: MutableSet = spongeImpl.mixinConfigurations extensions.configure(UserDevExtension::class) { mappings("official", "1.21.3") - accessTransformers.from(convertAWToAT.flatMap { it.accessTransformer }) - + accessTransformers.from(atFile) reobf = false runs { @@ -225,11 +222,9 @@ extensions.configure(UserDevExtension::class) { ideaModule("Sponge.SpongeForge.main") // property("forge.logging.console.level", "debug") - // jvmArgs("-Dbsl.debug=true") // Uncomment to debug bootstrap classpath args(mixinConfigs.flatMap { sequenceOf("--mixin.config", it) }) - environment("MOD_CLASSES", "nop") }