aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitchell Skaggs <skaggsm333@gmail.com>2021-05-22 17:29:02 -0500
committerGitHub <noreply@github.com>2021-05-22 23:29:02 +0100
commit1f80e00e8851765c5aff961e8213ec40e468ed41 (patch)
tree8f6cf335e2e76f660f0dc4f6794527400f766238
parente955ebb8c56378b166adbd440f237999a346099e (diff)
downloadarchitectury-loom-1f80e00e8851765c5aff961e8213ec40e468ed41.tar.gz
architectury-loom-1f80e00e8851765c5aff961e8213ec40e468ed41.tar.bz2
architectury-loom-1f80e00e8851765c5aff961e8213ec40e468ed41.zip
Add classifier to "fake" mods' id if they have a classifier specified (#394)
* Remove unused codepath (`RemapJarTask` is an `AbstractArchiveTask`) * Remove incorrect comment Comment originally added in 02e9616622abed6b266ced329b86d419ac31ee88 * Add classifier to `DependencyInfo` * Add classifier to generated mod ID * Clean up code structure from review Co-authored-by: haykam821 <haykam821@users.noreply.github.com> * Inline `file` local variable Co-authored-by: haykam821 <haykam821@users.noreply.github.com> Co-authored-by: haykam821 <haykam821@users.noreply.github.com>
-rw-r--r--src/main/java/net/fabricmc/loom/build/nesting/NestedDependencyProvider.java52
1 files changed, 32 insertions, 20 deletions
diff --git a/src/main/java/net/fabricmc/loom/build/nesting/NestedDependencyProvider.java b/src/main/java/net/fabricmc/loom/build/nesting/NestedDependencyProvider.java
index 8de3103e..60640cb6 100644
--- a/src/main/java/net/fabricmc/loom/build/nesting/NestedDependencyProvider.java
+++ b/src/main/java/net/fabricmc/loom/build/nesting/NestedDependencyProvider.java
@@ -32,7 +32,8 @@ import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
-import java.util.stream.Collectors;
+
+import javax.annotation.Nullable;
import com.google.gson.JsonObject;
import org.apache.commons.io.FileUtils;
@@ -42,7 +43,6 @@ import org.gradle.api.artifacts.Configuration;
import org.gradle.api.artifacts.Dependency;
import org.gradle.api.artifacts.DependencySet;
import org.gradle.api.artifacts.ProjectDependency;
-import org.gradle.api.artifacts.ResolvedArtifact;
import org.gradle.api.artifacts.ResolvedConfiguration;
import org.gradle.api.artifacts.ResolvedDependency;
import org.gradle.api.tasks.bundling.AbstractArchiveTask;
@@ -103,17 +103,17 @@ public final class NestedDependencyProvider implements NestedJarProvider {
visited.add(dependency.getGroup() + ":" + dependency.getName() + ":" + dependency.getVersion());
- // TODO change this to allow just normal jar tasks, so a project can have a none loom sub project
Collection<Task> remapJarTasks = dependencyProject.getTasksByName("remapJar", false);
Collection<Task> jarTasks = dependencyProject.getTasksByName("jar", false);
for (Task task : remapJarTasks.isEmpty() ? jarTasks : remapJarTasks) {
- if (task instanceof RemapJarTask remapJarTask) {
- File file = remapJarTask.getArchiveFile().get().getAsFile();
- fileList.add(new DependencyInfo<>(projectDependency, new ProjectDependencyMetaExtractor(), file));
- } else if (task instanceof AbstractArchiveTask abstractArchiveTask) {
- File file = abstractArchiveTask.getArchiveFile().get().getAsFile();
- fileList.add(new DependencyInfo<>(projectDependency, new ProjectDependencyMetaExtractor(), file));
+ if (task instanceof AbstractArchiveTask abstractArchiveTask) {
+ fileList.add(new DependencyInfo<>(
+ projectDependency,
+ new ProjectDependencyMetaExtractor(),
+ abstractArchiveTask.getArchiveFile().get().getAsFile(),
+ abstractArchiveTask.getArchiveClassifier().getOrNull()
+ ));
}
}
}
@@ -133,14 +133,13 @@ public final class NestedDependencyProvider implements NestedJarProvider {
continue;
}
- List<File> files = dependency
- .getModuleArtifacts()
- .stream()
- .map(ResolvedArtifact::getFile)
- .collect(Collectors.toList());
-
- for (File file : files) {
- fileList.add(new DependencyInfo<>(dependency, new ResolvedDependencyMetaExtractor(), file));
+ for (var artifact : dependency.getModuleArtifacts()) {
+ fileList.add(new DependencyInfo<>(
+ dependency,
+ new ResolvedDependencyMetaExtractor(),
+ artifact.getFile(),
+ artifact.getClassifier()
+ ));
}
}
@@ -195,7 +194,12 @@ public final class NestedDependencyProvider implements NestedJarProvider {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("schemaVersion", 1);
- jsonObject.addProperty("id", (metaExtractor.group(dependency) + "_" + metaExtractor.name(dependency)).replaceAll("\\.", "_").toLowerCase(Locale.ENGLISH));
+
+ jsonObject.addProperty("id",
+ (metaExtractor.group(dependency) + "_" + metaExtractor.name(dependency) + info.getClassifierSuffix())
+ .replaceAll("\\.", "_")
+ .toLowerCase(Locale.ENGLISH)
+ );
jsonObject.addProperty("version", metaExtractor.version(dependency));
jsonObject.addProperty("name", metaExtractor.name(dependency));
@@ -206,8 +210,8 @@ public final class NestedDependencyProvider implements NestedJarProvider {
return LoomGradlePlugin.GSON.toJson(jsonObject);
}
- private record DependencyInfo<D>(D dependency, DependencyMetaExtractor<D> metaExtractor, File file) {
- public void validateInputs() {
+ private record DependencyInfo<D>(D dependency, DependencyMetaExtractor<D> metaExtractor, File file, @Nullable String classifier) {
+ void validateInputs() {
if (!file.exists()) {
throw new RuntimeException("Failed to include nested jars, as it could not be found @ " + file.getAbsolutePath());
}
@@ -216,6 +220,14 @@ public final class NestedDependencyProvider implements NestedJarProvider {
throw new RuntimeException("Failed to include nested jars, as file was not a jar: " + file.getAbsolutePath());
}
}
+
+ String getClassifierSuffix() {
+ if (classifier == null) {
+ return "";
+ } else {
+ return "_" + classifier;
+ }
+ }
}
private interface DependencyMetaExtractor<D> {