mirror of
https://github.com/architectury/architectury-loom.git
synced 2026-04-02 13:37:45 -05:00
Rewrite download utils (#681)
- eTag support (It seems Mojang's CDN and our meta/maven do not support this right now) - Age based caching. - Sha1 based caching. - HTTP(S) proxy settings should now be respected. - The downloader has better awareness of offline mode and refresh deps, cleaning up the calling code a bit. - Uses the new Java 11 HTTP client, provides async support for downloading multiple files - Progress handling (TODO needs hooking up to gradle) - Better compression support. Handled by [Methanol](https://mizosoft.github.io/methanol/) - Unit tested with a real web server.
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
|
||||
package net.fabricmc.loom.extension;
|
||||
|
||||
import java.net.URISyntaxException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -48,6 +49,8 @@ import net.fabricmc.loom.configuration.providers.mappings.MappingsProviderImpl;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.mapped.IntermediaryMinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.mapped.NamedMinecraftProvider;
|
||||
import net.fabricmc.loom.util.download.Download;
|
||||
import net.fabricmc.loom.util.download.DownloadBuilder;
|
||||
|
||||
public class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implements LoomGradleExtension {
|
||||
private final Project project;
|
||||
@@ -206,9 +209,36 @@ public class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implemen
|
||||
transitiveAccessWideners.addAll(accessWidenerFiles);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DownloadBuilder download(String url) {
|
||||
DownloadBuilder builder;
|
||||
|
||||
try {
|
||||
builder = Download.create(url);
|
||||
} catch (URISyntaxException e) {
|
||||
throw new RuntimeException("Failed to create downloader for: " + e);
|
||||
}
|
||||
|
||||
if (project.getGradle().getStartParameter().isOffline()) {
|
||||
builder.offline();
|
||||
}
|
||||
|
||||
if (project.getGradle().getStartParameter().isRefreshDependencies() || Boolean.getBoolean("loom.refresh")) {
|
||||
builder.forceDownload();
|
||||
}
|
||||
|
||||
// TODO
|
||||
//builder.executor();
|
||||
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T extends IntermediateMappingsProvider> void configureIntermediateMappingsProviderInternal(T provider) {
|
||||
provider.getMinecraftVersion().set(getProject().provider(() -> getMinecraftProvider().minecraftVersion()));
|
||||
provider.getMinecraftVersion().disallowChanges();
|
||||
|
||||
provider.getDownloader().set(this::download);
|
||||
provider.getDownloader().disallowChanges();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user