Skip to content

Commit

Permalink
add generateDiff task (not yet used in generate-diff.yml)
Browse files Browse the repository at this point in the history
  • Loading branch information
supersaiyansubtlety committed Oct 23, 2024
1 parent da7b630 commit c5c90f5
Show file tree
Hide file tree
Showing 2 changed files with 143 additions and 8 deletions.
30 changes: 22 additions & 8 deletions buildSrc/src/main/java/quilt/internal/QuiltMappingsPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
import quilt.internal.tasks.diff.DownloadTargetMappingJarTask;
import quilt.internal.tasks.diff.DownloadTargetMetaFileTask;
import quilt.internal.tasks.diff.ExtractTargetMappingJarTask;
import quilt.internal.tasks.diff.DiffDirectoriesTask;
import quilt.internal.tasks.diff.RemapTargetMinecraftJarTask;
import quilt.internal.tasks.diff.RemapTargetUnpickDefinitionsTask;
import quilt.internal.tasks.diff.TargetVersionConsumingTask;
Expand Down Expand Up @@ -845,7 +846,7 @@ public void apply(@NotNull Project project) {
}
);

tasks.register(
final var decompileVineflower = tasks.register(
DecompileVineflowerTask.DECOMPILE_VINEFLOWER_TASK_NAME,
DecompileVineflowerTask.class,
task -> {
Expand All @@ -859,7 +860,7 @@ public void apply(@NotNull Project project) {
insertAutoGeneratedMappings.flatMap(AddProposedMappingsTask::getOutputMappings)
));

// TODO move this once generateDiff task eliminates magic strings
// TODO move this to build/ once generate-diff.yml uses generateDiff
task.getOutput().convention(projectDir.dir("namedSrc"));
}
);
Expand Down Expand Up @@ -1002,7 +1003,7 @@ public void apply(@NotNull Project project) {
}
);

tasks.register(
final var decompileTargetVineflower = tasks.register(
DecompileTargetVineflowerTask.DECOMPILE_TARGET_VINEFLOWER_TASK_NAME,
DecompileTargetVineflowerTask.class,
task -> {
Expand All @@ -1017,12 +1018,25 @@ public void apply(@NotNull Project project) {
.map(dest -> dest.dir("mappings").file("mappings.tiny"))
));

// TODO move this once generateDiff task eliminates magic strings
task.getOutput().convention(projectDir.dir("namedTargetSrc"));
});
// TODO move this to build/ once generate-diff.yml uses generateDiff
task.getOutput().convention(projectDir.dir("namedTargetSrc"));
}
);

// TODO use this in generate-diff.yml
tasks.register(
DiffDirectoriesTask.GENERATE_DIFF_TASK_NAME,
DiffDirectoriesTask.class,
task -> {
task.getAdditionalArgs().add("-bur");

task.getFirst().convention(decompileTargetVineflower.flatMap(DecompileTargetVineflowerTask::getOutput));

// TODO add generateDiff task,
// allow passing its output location on command line and pass it in generate-diff.yml
task.getSecond().convention(decompileVineflower.flatMap(DecompileVineflowerTask::getOutput));

task.getDest().convention(buildDir.file("target.diff"));
}
);

// sources are added in build.gradle because they're from a project source set
tasks.register(SourcesJarTask.SOURCES_JAR_TASK_NAME, SourcesJarTask.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
package quilt.internal.tasks.diff;

import org.gradle.api.GradleException;
import org.gradle.api.file.Directory;
import org.gradle.api.file.DirectoryProperty;
import org.gradle.api.file.RegularFileProperty;
import org.gradle.api.provider.ListProperty;
import org.gradle.api.specs.Specs;
import org.gradle.api.tasks.Exec;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputDirectory;
import org.gradle.api.tasks.Optional;
import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.TaskAction;
import org.gradle.api.tasks.options.Option;
import quilt.internal.Constants.Groups;
import quilt.internal.tasks.MappingsTask;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import static quilt.internal.util.ProviderUtil.toOptional;

public abstract class DiffDirectoriesTask extends Exec implements MappingsTask {
public static final String GENERATE_DIFF_TASK_NAME = "generateDiff";

public static final String DIFF_COMMAND = "diff";

private static final String EXIT_VALUE_1_ERROR =
"Process 'command '" + DIFF_COMMAND + "'' finished with non-zero exit value 1";

@Option(
option = "args",
description = "Additional args passed to the " + DIFF_COMMAND + " command."
)
@Optional
@Input
public abstract ListProperty<String> getAdditionalArgs();

@Option(
option = "first",
description = "The first file passed to the " + DIFF_COMMAND + " command."
)
@InputDirectory
public abstract DirectoryProperty getFirst();

@Option(
option = "second",
description = "The second file passed to the " + DIFF_COMMAND + " command."
)
@InputDirectory
public abstract DirectoryProperty getSecond();

@Option(
option = "dest",
description = "The location to save the " + DIFF_COMMAND + " command output to."
)
@OutputFile
public abstract RegularFileProperty getDest();

public DiffDirectoriesTask() {
this.setGroup(Groups.DIFF);

this.setExecutable(DIFF_COMMAND);

this.getOutputs().cacheIf(
"Re-enable caching because Exec has @DisableCachingByDefault",
Specs.satisfyAll()
);

this.getArgumentProviders().add(() -> {
// require neither directory is empty so the diff isn't just the full contents of one of them
final Directory first = this.getFirst().get();
if (first.getAsFileTree().isEmpty()) {
throw new GradleException("first directory is empty");
}

final Directory second = this.getSecond().get();
if (second.getAsFileTree().isEmpty()) {
throw new GradleException("second directory is empty");
}

final List<String> args = new ArrayList<>();

toOptional(this.getAdditionalArgs()).ifPresent(args::addAll);

args.add(first.getAsFile().getAbsolutePath());
args.add(second.getAsFile().getAbsolutePath());

return args;
});
}

@Override
@TaskAction
public void exec() {
try {
final File dest = this.getDest().get().getAsFile();

dest.getParentFile().mkdirs();

dest.createNewFile();

this.setStandardOutput(new FileOutputStream(dest.getAbsolutePath()));
} catch (IOException e) {
throw new GradleException("Failed to access destination file", e);
}

try {
super.exec();
} catch (GradleException e) {
// ignore exit value 1 which just means there was a difference between the inputs
if (!e.getMessage().equals(EXIT_VALUE_1_ERROR)) {
throw new GradleException("Error executing " + DIFF_COMMAND, e);
}
}
}
}

3 comments on commit c5c90f5

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No difference between head and target.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With commit c5c90f5, 11 file(s) were updated with 24 line(s) added and 24 removed compared to the latest Quilt Mappings version.

View the diff here:
diff -bur namedTargetSrc/net/minecraft/client/gui/ParentElement.java namedSrc/net/minecraft/client/gui/ParentElement.java
--- namedTargetSrc/net/minecraft/client/gui/ParentElement.java	2024-10-23 08:24:32.034136446 +0000
+++ namedSrc/net/minecraft/client/gui/ParentElement.java	2024-10-23 08:23:21.709842448 +0000
@@ -153,7 +153,7 @@
     * Mapping not found
     */
    @Override
-   default void setFocused(boolean focused) {
+   default void setFocused(boolean bl) {
    }
 
    /**
diff -bur namedTargetSrc/net/minecraft/client/gui/screen/realms/RealmsMainScreen.java namedSrc/net/minecraft/client/gui/screen/realms/RealmsMainScreen.java
--- namedTargetSrc/net/minecraft/client/gui/screen/realms/RealmsMainScreen.java	2024-10-23 08:24:32.122136765 +0000
+++ namedSrc/net/minecraft/client/gui/screen/realms/RealmsMainScreen.java	2024-10-23 08:23:21.849843097 +0000
@@ -1506,9 +1506,9 @@
        * Mapping not found
        */
       @Override
-      public void setFocused(boolean focused) {
-         super.setFocused(focused);
-         this.button.setFocused(focused);
+      public void setFocused(boolean bl) {
+         super.setFocused(bl);
+         this.button.setFocused(bl);
       }
 
       /**
diff -bur namedTargetSrc/net/minecraft/client/gui/widget/ClickableWidget.java namedSrc/net/minecraft/client/gui/widget/ClickableWidget.java
--- namedTargetSrc/net/minecraft/client/gui/widget/ClickableWidget.java	2024-10-23 08:24:32.150136866 +0000
+++ namedSrc/net/minecraft/client/gui/widget/ClickableWidget.java	2024-10-23 08:23:21.869843190 +0000
@@ -447,8 +447,8 @@
     * Mapping not found
     */
    @Override
-   public void setFocused(boolean focused) {
-      this.focused = focused;
+   public void setFocused(boolean bl) {
+      this.focused = bl;
    }
 
    /**
diff -bur namedTargetSrc/net/minecraft/client/gui/widget/DraggingWidget.java namedSrc/net/minecraft/client/gui/widget/DraggingWidget.java
--- namedTargetSrc/net/minecraft/client/gui/widget/DraggingWidget.java	2024-10-23 08:24:32.038136461 +0000
+++ namedSrc/net/minecraft/client/gui/widget/DraggingWidget.java	2024-10-23 08:23:21.717842485 +0000
@@ -121,7 +121,7 @@
     * Mapping not found
     */
    @Override
-   public void setFocused(boolean focused) {
-      ParentElement.super.setFocused(focused);
+   public void setFocused(boolean bl) {
+      ParentElement.super.setFocused(bl);
    }
 }
diff -bur namedTargetSrc/net/minecraft/client/gui/widget/EditBoxWidget.java namedSrc/net/minecraft/client/gui/widget/EditBoxWidget.java
--- namedTargetSrc/net/minecraft/client/gui/widget/EditBoxWidget.java	2024-10-23 08:24:32.106136707 +0000
+++ namedSrc/net/minecraft/client/gui/widget/EditBoxWidget.java	2024-10-23 08:23:21.825842986 +0000
@@ -342,9 +342,9 @@
     * Mapping not found
     */
    @Override
-   public void setFocused(boolean focused) {
-      super.setFocused(focused);
-      if (focused) {
+   public void setFocused(boolean bl) {
+      super.setFocused(bl);
+      if (bl) {
          this.focusTime = Util.getMeasuringTimeMs();
       }
    }
diff -bur namedTargetSrc/net/minecraft/client/gui/widget/HeaderBar.java namedSrc/net/minecraft/client/gui/widget/HeaderBar.java
--- namedTargetSrc/net/minecraft/client/gui/widget/HeaderBar.java	2024-10-23 08:24:32.194137025 +0000
+++ namedSrc/net/minecraft/client/gui/widget/HeaderBar.java	2024-10-23 08:23:21.925843449 +0000
@@ -122,10 +122,10 @@
     * Mapping not found
     */
    @Override
-   public void setFocused(boolean focused) {
-      super.setFocused(focused);
+   public void setFocused(boolean bl) {
+      super.setFocused(bl);
       if (this.getFocused() != null) {
-         this.getFocused().setFocused(focused);
+         this.getFocused().setFocused(bl);
       }
    }
 
diff -bur namedTargetSrc/net/minecraft/client/gui/widget/list/EntryListWidget.java namedSrc/net/minecraft/client/gui/widget/list/EntryListWidget.java
--- namedTargetSrc/net/minecraft/client/gui/widget/list/EntryListWidget.java	2024-10-23 08:24:31.970136214 +0000
+++ namedSrc/net/minecraft/client/gui/widget/list/EntryListWidget.java	2024-10-23 08:23:21.601841948 +0000
@@ -908,7 +908,7 @@
        * @mapping {@literal named setFocused Lnet/minecraft/client/gui/widget/list/EntryListWidget$Entry;setFocused(Z)V}
        */
       @Override
-      public void setFocused(boolean focused) {
+      public void setFocused(boolean bl) {
       }
 
       /**
diff -bur namedTargetSrc/net/minecraft/client/gui/widget/recipe_book/RecipeAlternativesWidget.java namedSrc/net/minecraft/client/gui/widget/recipe_book/RecipeAlternativesWidget.java
--- namedTargetSrc/net/minecraft/client/gui/widget/recipe_book/RecipeAlternativesWidget.java	2024-10-23 08:24:32.038136461 +0000
+++ namedSrc/net/minecraft/client/gui/widget/recipe_book/RecipeAlternativesWidget.java	2024-10-23 08:23:21.717842485 +0000
@@ -249,7 +249,7 @@
     * Mapping not found
     */
    @Override
-   public void setFocused(boolean focused) {
+   public void setFocused(boolean bl) {
    }
 
    /**
diff -bur namedTargetSrc/net/minecraft/client/gui/widget/recipe_book/RecipeBookWidget.java namedSrc/net/minecraft/client/gui/widget/recipe_book/RecipeBookWidget.java
--- namedTargetSrc/net/minecraft/client/gui/widget/recipe_book/RecipeBookWidget.java	2024-10-23 08:24:32.154136881 +0000
+++ namedSrc/net/minecraft/client/gui/widget/recipe_book/RecipeBookWidget.java	2024-10-23 08:23:21.877843227 +0000
@@ -742,7 +742,7 @@
     * Mapping not found
     */
    @Override
-   public void setFocused(boolean focused) {
+   public void setFocused(boolean bl) {
    }
 
    /**
diff -bur namedTargetSrc/net/minecraft/client/gui/widget/SliderWidget.java namedSrc/net/minecraft/client/gui/widget/SliderWidget.java
--- namedTargetSrc/net/minecraft/client/gui/widget/SliderWidget.java	2024-10-23 08:24:31.958136171 +0000
+++ namedSrc/net/minecraft/client/gui/widget/SliderWidget.java	2024-10-23 08:23:21.589841892 +0000
@@ -151,9 +151,9 @@
     * Mapping not found
     */
    @Override
-   public void setFocused(boolean focused) {
-      super.setFocused(focused);
-      if (!focused) {
+   public void setFocused(boolean bl) {
+      super.setFocused(bl);
+      if (!bl) {
          this.mutable = false;
       } else {
          InputType lv = MinecraftClient.getInstance().getLastInputType();
diff -bur namedTargetSrc/net/minecraft/client/gui/widget/TextFieldWidget.java namedSrc/net/minecraft/client/gui/widget/TextFieldWidget.java
--- namedTargetSrc/net/minecraft/client/gui/widget/TextFieldWidget.java	2024-10-23 08:24:31.986136272 +0000
+++ namedSrc/net/minecraft/client/gui/widget/TextFieldWidget.java	2024-10-23 08:23:21.629842078 +0000
@@ -736,10 +736,10 @@
     * Mapping not found
     */
    @Override
-   public void setFocused(boolean focused) {
-      if (this.focusUnlocked || focused) {
-         super.setFocused(focused);
-         if (focused) {
+   public void setFocused(boolean bl) {
+      if (this.focusUnlocked || bl) {
+         super.setFocused(bl);
+         if (bl) {
             this.lastFocusTime = Util.getMeasuringTimeMs();
          }
       }

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No difference between head and target.

Please sign in to comment.