aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/fabricmc/loom/util/DependencyDownloader.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/fabricmc/loom/util/DependencyDownloader.java')
-rw-r--r--src/main/java/net/fabricmc/loom/util/DependencyDownloader.java45
1 files changed, 42 insertions, 3 deletions
diff --git a/src/main/java/net/fabricmc/loom/util/DependencyDownloader.java b/src/main/java/net/fabricmc/loom/util/DependencyDownloader.java
index a7201cbb..85bcbe00 100644
--- a/src/main/java/net/fabricmc/loom/util/DependencyDownloader.java
+++ b/src/main/java/net/fabricmc/loom/util/DependencyDownloader.java
@@ -24,7 +24,14 @@
package net.fabricmc.loom.util;
+import java.io.File;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
import org.gradle.api.Project;
+import org.gradle.api.artifacts.Configuration;
+import org.gradle.api.artifacts.Dependency;
+import org.gradle.api.artifacts.ModuleDependency;
import org.gradle.api.file.FileCollection;
/**
@@ -41,8 +48,40 @@ public final class DependencyDownloader {
* @return the resolved files
*/
public static FileCollection download(Project project, String dependencyNotation) {
- var dependency = project.getDependencies().create(dependencyNotation);
- var config = project.getConfigurations().detachedConfiguration(dependency);
- return config.fileCollection(dep -> true);
+ return download(project, dependencyNotation, true, false);
+ }
+
+ public static FileCollection download(Project project, String dependencyNotation, boolean transitive, boolean resolve) {
+ Dependency dependency = project.getDependencies().create(dependencyNotation);
+
+ if (dependency instanceof ModuleDependency) {
+ ((ModuleDependency) dependency).setTransitive(transitive);
+ }
+
+ Configuration config = project.getConfigurations().detachedConfiguration(dependency);
+ config.setTransitive(transitive);
+ FileCollection files = config.fileCollection(dep -> true);
+
+ if (resolve) {
+ files = project.files(files.getFiles());
+ }
+
+ return files;
+ }
+
+ private static Set<File> resolve(Configuration configuration, boolean transitive) {
+ Configuration copy = configuration.copy();
+ copy.setTransitive(transitive);
+ Set<File> files = new LinkedHashSet<>(copy.resolve());
+
+ for (Configuration extendsForm : configuration.getExtendsFrom()) {
+ files.addAll(resolve(extendsForm, transitive));
+ }
+
+ return files;
+ }
+
+ public static Set<File> resolveFiles(Configuration configuration, boolean transitive) {
+ return resolve(configuration, transitive);
}
}