Skip to content

Commit

Permalink
UNTESTED, INCOMPLETE
Browse files Browse the repository at this point in the history
rename MappingsPlugin -> QuiltMappingsPlugin and its id mappings-logic -> quilt-mappings
move enimga_profile.json and simple_type_field_names.json5 to enigma/
rename some things in MappingsExtension
make MappingsV2JarTask fully configurable and move its configuration to a configureEach in MappingsPlugin
extract magic strings used to set/get MappingsV2JarTask file locations in MappingsPlugin
  • Loading branch information
supersaiyansubtlety committed Oct 6, 2024
1 parent 4f8fb2b commit 640b959
Show file tree
Hide file tree
Showing 15 changed files with 162 additions and 70 deletions.
6 changes: 3 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,13 @@ plugins {
id 'java' // for constants, packages, javadoc
id 'maven-publish'
id 'org.cadixdev.licenser' version '0.6.1'
id "mappings-logic"
id "quilt-mappings"
}

mappings {
enigmaProfile = file('enigma_profile.json')
enigmaProfileConfig = file('enigma/enigma_profile.json')

unpick = file('unpick/unpick.json')
unpickMeta = file('unpick/unpick.json')
}

combineUnpickDefinitions {
Expand Down
4 changes: 2 additions & 2 deletions buildSrc/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ test {

gradlePlugin {
plugins {
mappingsLogic {
id = 'mappings-logic'
quiltMappings {
id = 'quilt-mappings'
implementationClass = 'quilt.internal.MappingsPlugin'
}
}
Expand Down
22 changes: 11 additions & 11 deletions buildSrc/src/main/java/quilt/internal/MappingsExtension.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import org.gradle.api.GradleException;
import org.gradle.api.Project;
import org.gradle.api.file.DirectoryProperty;
import org.gradle.api.file.RegularFile;
import org.gradle.api.file.RegularFileProperty;
import org.gradle.api.provider.Provider;
Expand All @@ -14,25 +13,25 @@
public abstract class MappingsExtension {
// TODO see if this can use a BuildService
/**
* {@link MappingsPlugin} configures all
* {@link QuiltMappingsPlugin} configures all
* {@link quilt.internal.tasks.EnigmaProfileConsumingTask EnigmaProfileConsumingTask}s to use this profile.
*/
public final Provider<EnigmaProfile> enigmaProfile;

public abstract RegularFileProperty getUnpick();
public abstract RegularFileProperty getUnpickMeta();

private final FileConstants fileConstants;

public static MappingsExtension get(Project project) {
return project.getExtensions().getByType(MappingsExtension.class);
}

protected abstract RegularFileProperty getEnigmaProfileFile();
protected abstract RegularFileProperty getEnigmaProfileConfigImpl();

public MappingsExtension(Project project) {
this.fileConstants = new FileConstants(project);

this.enigmaProfile = this.getEnigmaProfileFile()
this.enigmaProfile = this.getEnigmaProfileConfigImpl()
.map(RegularFile::getAsFile)
.map(File::toPath)
.map(profilePath -> {
Expand All @@ -48,15 +47,16 @@ public FileConstants getFileConstants() {
return this.fileConstants;
}

public void setEnigmaProfile(File file) {
this.getEnigmaProfileFile().set(file);
// TODO is there a cleaner way to only expose setters?
public void setEnigmaProfileConfig(File file) {
this.getEnigmaProfileConfigImpl().set(file);
}

public void setEnigmaProfile(RegularFile file) {
this.getEnigmaProfileFile().set(file);
public void setEnigmaProfileConfig(RegularFile file) {
this.getEnigmaProfileConfigImpl().set(file);
}

public void setEnigmaProfile(Provider<? extends RegularFile> fileProvider) {
this.getEnigmaProfileFile().set(fileProvider);
public void setEnigmaProfileConfig(Provider<? extends RegularFile> fileProvider) {
this.getEnigmaProfileConfigImpl().set(fileProvider);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import org.gradle.api.GradleException;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.artifacts.VersionConstraint;
import org.gradle.api.file.Directory;
import org.gradle.api.file.FileSystemLocationProperty;
import org.gradle.api.file.RegularFile;
import org.gradle.api.plugins.ExtensionContainer;
import org.gradle.api.plugins.JavaBasePlugin;
Expand Down Expand Up @@ -65,7 +67,7 @@
import static quilt.internal.util.ProviderUtil.provideProjectDir;

// TODO extract common providers, possibly convert FileConstants to providers instead of files
public abstract class MappingsPlugin implements Plugin<Project> {
public abstract class QuiltMappingsPlugin implements Plugin<Project> {
public static final String INSERT_AUTO_GENERATED_MAPPINGS_TASK_NAME = "insertAutoGeneratedMappings";
public static final String DOWNLOAD_PER_VERSION_MAPPINGS_TASK_NAME = "downloadPerVersionMappings";
public static final String EXTRACT_TINY_PER_VERSION_MAPPINGS_TASK_NAME = "extractTinyPerVersionMappings";
Expand All @@ -76,15 +78,20 @@ public abstract class MappingsPlugin implements Plugin<Project> {

public static final String CONSTANTS_SOURCE_SET_NAME = "constants";

public static final String ARCHIVE_FILE_NAME_PREFIX =
Constants.MAPPINGS_NAME + "-" + Constants.MAPPINGS_VERSION + "-";

public static final String JAR_UNPICK_META_PATH = "extras/unpick.json";
public static final String JAR_UNPICK_DEFINITION_PATH = "extras/definitions.unpick";
public static final String JAR_MAPPINGS_PATH = "mappings/mappings.tiny";

public static final String DECOMPILE_TARGET_VINEFLOWER_TASK_NAME = "decompileTargetVineflower";
public static final String CONSTANTS_JAR_TASK_NAME = "constantsJar";
public static final String UNPICK_HASHED_JAR_TASK_NAME = "unpickHashedJar";
public static final String V_2_UNMERGED_MAPPINGS_JAR_TASK_NAME = "v2UnmergedMappingsJar";
public static final String V_2_MERGED_MAPPINGS_JAR_TASK_NAME = "v2MergedMappingsJar";
public static final String INTERMEDIARY_V_2_MAPPINGS_JAR_TASK_NAME = "intermediaryV2MappingsJar";
public static final String INTERMEDIARY_V_2_MERGED_MAPPINGS_JAR_TASK_NAME = "intermediaryV2MergedMappingsJar";
public static final String ARCHIVE_FILE_NAME_PREFIX =
Constants.MAPPINGS_NAME + "-" + Constants.MAPPINGS_VERSION + "-";

private static final String QUILT_MAPPINGS_PREFIX = "quilt-mappings-";

Expand Down Expand Up @@ -115,7 +122,7 @@ public void apply(@NotNull Project project) {
);

// provide an informative error message if no profile is specified
ext.getEnigmaProfileFile().convention(() -> {
ext.getEnigmaProfileConfigImpl().convention(() -> {
throw new GradleException(
"No enigma profile specified. " +
"A profile must be specified to use an EnigmaProfileConsumingTask."
Expand Down Expand Up @@ -357,6 +364,28 @@ public void apply(@NotNull Project project) {

final var removeIntermediary = tasks.register(RemoveIntermediaryTask.TASK_NAME, RemoveIntermediaryTask.class);

tasks.withType(MappingsV2JarTask.class).configureEach(task -> {
task.getUnpickVersion().convention(project.provider(() ->
task.libs().findVersion("unpick")
.map(VersionConstraint::getRequiredVersion)
.orElseThrow(() -> new RuntimeException("Could not find unpick version"))
));

task.getUnpickMetaDestName().convention(JAR_UNPICK_META_PATH);

task.getUnpickDefinitionDestName().convention(JAR_UNPICK_DEFINITION_PATH);

task.getMappingsDestName().convention(JAR_MAPPINGS_PATH);

task.getUnpickMeta().convention(ext.getUnpickMeta());

task.getUnpickDefinition().convention(
combineUnpickDefinitions.flatMap(CombineUnpickDefinitionsTask::getOutput)
);

task.getDestinationDirectory().convention(project.getLayout().getBuildDirectory().dir("libs"));
});

tasks.register(V_2_UNMERGED_MAPPINGS_JAR_TASK_NAME, MappingsV2JarTask.class, task -> {
task.getMappings().convention(
insertAutoGeneratedMappings.flatMap(AddProposedMappingsTask::getOutputMappings)
Expand All @@ -366,10 +395,10 @@ public void apply(@NotNull Project project) {
});

tasks.register(INTERMEDIARY_V_2_MAPPINGS_JAR_TASK_NAME, MappingsV2JarTask.class, task -> {
task.getArchiveFileName().convention(ARCHIVE_FILE_NAME_PREFIX + "intermediary-v2.jar");

task.getMappings().convention(removeIntermediary.flatMap(RemoveIntermediaryTask::getOutputMappings));

task.getArchiveFileName().convention(ARCHIVE_FILE_NAME_PREFIX + "intermediary-v2.jar");

task.onlyIf(unused ->
checkIntermediaryMappings.map(CheckIntermediaryMappingsTask::isPresent).getOrElse(false)
);
Expand Down Expand Up @@ -503,7 +532,7 @@ public void apply(@NotNull Project project) {
));

task.getTargetJar().convention(task.provideVersionedProjectFile(version ->
Path.of(MappingsPlugin.TARGET_MAPPINGS_DIR, "quilt-mappings-" + version + "-v2.jar")
Path.of(QuiltMappingsPlugin.TARGET_MAPPINGS_DIR, "quilt-mappings-" + version + "-v2.jar")
));
}
);
Expand All @@ -515,17 +544,18 @@ public void apply(@NotNull Project project) {
downloadTargetMappingsJar.flatMap(DownloadTargetMappingJarTask::getTargetJar)
);
task.getExtractionDest().convention(task.provideVersionedProjectDir(version ->
Path.of(MappingsPlugin.TARGET_MAPPINGS_DIR, "quilt-mappings-" + version)
Path.of(QuiltMappingsPlugin.TARGET_MAPPINGS_DIR, "quilt-mappings-" + version)
));
}
);

final var checkUnpickVersionsMatch = tasks.register(
CheckUnpickVersionsMatchTask.TASK_NAME, CheckUnpickVersionsMatchTask.class,
task -> {
task.getUnpickJson().convention(
task.getUnpickMeta().convention(
extractTargetMappingsJar.flatMap(ExtractTargetMappingJarTask::getExtractionDest)
.map(dest -> dest.dir("extras").file("unpick.json"))
// TODO make sure this works
.map(dest -> dest.file(JAR_UNPICK_META_PATH))
);
}
);
Expand All @@ -546,12 +576,16 @@ public void apply(@NotNull Project project) {
task -> {
task.getInput().convention(
extractTargetMappingsJar.flatMap(ExtractTargetMappingJarTask::getExtractionDest)
.map(dest -> dest.dir("extras").file("definitions.unpick"))
// .map(dest -> dest.dir("extras").file("definitions.unpick"))
// TODO make sure this works
.map(dest -> dest.file(JAR_UNPICK_DEFINITION_PATH))
);

task.getMappings().convention(
extractTargetMappingsJar.flatMap(ExtractTargetMappingJarTask::getExtractionDest)
.map(dest -> dest.dir("mappings").file("mappings.tiny"))
// .map(dest -> dest.dir("mappings").file("mappings.tiny"))
// TODO make sure this works
.map(dest -> dest.file(JAR_MAPPINGS_PATH))
);

task.getOutput().convention(task.provideVersionedProjectFile(version ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.gradle.api.tasks.Internal;
import org.quiltmc.enigma.api.EnigmaProfile;
import org.quiltmc.enigma.api.service.JarIndexerService;
import quilt.internal.QuiltMappingsPlugin;

import java.util.Collection;
import java.util.stream.Stream;
Expand All @@ -16,7 +17,7 @@
/**
* A task that takes an {@link EnigmaProfile} as input.
* <p>
* If {@link quilt.internal.MappingsPlugin MappingsPlugin} is applied, any {@code EnigmaProfileConsumingTask}s will use
* If {@link QuiltMappingsPlugin MappingsPlugin} is applied, any {@code EnigmaProfileConsumingTask}s will use
* {@link quilt.internal.MappingsExtension MappingsExtension}'s
* {@link quilt.internal.MappingsExtension#enigmaProfile enigmaProfile} by default.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@
import org.gradle.api.tasks.TaskAction;
import org.jetbrains.annotations.VisibleForTesting;
import quilt.internal.Constants;
import quilt.internal.MappingsPlugin;
import quilt.internal.QuiltMappingsPlugin;
import quilt.internal.tasks.DefaultMappingsTask;
import quilt.internal.tasks.setup.DownloadMappingsTask;
import quilt.internal.tasks.setup.ExtractTinyMappingsTask;

import net.fabricmc.stitch.commands.tinyv2.CommandReorderTinyV2;
Expand All @@ -26,15 +25,15 @@ public abstract class InvertPerVersionMappingsTask extends DefaultMappingsTask {

public InvertPerVersionMappingsTask() {
super(Constants.Groups.BUILD_MAPPINGS_GROUP);
this.dependsOn(MappingsPlugin.DOWNLOAD_PER_VERSION_MAPPINGS_TASK_NAME);
this.dependsOn(QuiltMappingsPlugin.DOWNLOAD_PER_VERSION_MAPPINGS_TASK_NAME);

this.getInvertedTinyFile().convention(() -> new File(
this.fileConstants.cacheFilesMinecraft,
"%s-%s-inverted.tiny".formatted(Constants.MINECRAFT_VERSION, Constants.PER_VERSION_MAPPINGS_NAME)
));

this.getInput().convention(
this.getTaskNamed(MappingsPlugin.EXTRACT_TINY_PER_VERSION_MAPPINGS_TASK_NAME, ExtractTinyMappingsTask.class)
this.getTaskNamed(QuiltMappingsPlugin.EXTRACT_TINY_PER_VERSION_MAPPINGS_TASK_NAME, ExtractTinyMappingsTask.class)
.getTinyFile()
);
}
Expand Down
Loading

0 comments on commit 640b959

Please sign in to comment.