[FIX][EXPERIMENTAL] Full support UpdatesProvider

This commit is contained in:
Gravita 2025-05-30 16:49:55 +07:00
parent e664c579a5
commit c65e20d77b
5 changed files with 41 additions and 2 deletions

View file

@ -5,6 +5,7 @@
import org.apache.logging.log4j.Logger;
import pro.gravit.launcher.base.Launcher;
import pro.gravit.launcher.base.Downloader;
import pro.gravit.launcher.core.hasher.HashedDir;
import pro.gravit.launchserver.HttpRequester;
import pro.gravit.launchserver.LaunchServer;
import pro.gravit.launchserver.command.Command;
@ -46,6 +47,10 @@ public void invoke(String... args) throws Exception {
String type = args.length > 2 ? args[2] : "mojang";
Path assetDir = server.createTempDirectory("assets");
var updatesDir = server.config.updatesProvider.getUpdatesDir(dirName);
if(updatesDir == null) {
updatesDir = new HashedDir();
server.config.updatesProvider.create(dirName);
}
// Create asset dir
if (Files.notExists(assetDir)) {
@ -92,7 +97,7 @@ public void invoke(String... args) throws Exception {
hash = hash.substring(0, 2) + "/" + hash;
var size = value.get("size").getAsLong();
var path = "objects/" + hash;
if (updatesDir.findRecursive(path).isFound()) {
if (updatesDir.tryFindRecursive(path).isFound()) {
continue;
}
toDownload.add(new Downloader.SizedFile(hash, path, size));

View file

@ -43,6 +43,7 @@ public void invoke(String... args) throws IOException, CommandException {
String versionName = args[0];
String dirName = IOHelper.verifyFileName(args[1] != null ? args[1] : args[0]);
Path clientDir = server.createTempDirectory("client");
server.config.updatesProvider.create(dirName);
boolean isMirrorClientDownload = false;
if (args.length > 2) {

View file

@ -5,6 +5,7 @@
import com.google.gson.JsonParser;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import pro.gravit.launcher.core.hasher.HashedDir;
import pro.gravit.launchserver.LaunchServer;
import pro.gravit.launchserver.command.Command;
import pro.gravit.utils.command.CommandException;
@ -41,6 +42,9 @@ public void invoke(String... args) throws Exception {
String indexFileName = IOHelper.verifyFileName(args[1]);
String outputAssetDirName = IOHelper.verifyFileName(args[2]);
var updatesDir = server.config.updatesProvider.getUpdatesDir(inputAssetDirName);
if(updatesDir == null) {
server.config.updatesProvider.create(inputAssetDirName);
}
Path outputAssetDir = Path.of(outputAssetDirName);
// Create new asset dir

View file

@ -95,6 +95,35 @@ public FindRecursiveResult findRecursive(String path) {
return new FindRecursiveResult(current, entry, name);
}
public FindRecursiveResult tryFindRecursive(String path) {
StringTokenizer t = new StringTokenizer(path, "/");
HashedDir current = this;
HashedEntry entry = null;
String name = null;
while (t.hasMoreTokens()) {
name = t.nextToken();
HashedEntry e = current.map.get(name);
if (e == null && !t.hasMoreTokens()) {
break;
}
if (e == null) {
return new FindRecursiveResult(current, entry, name);
}
if (e.getType() == Type.DIR) {
if (!t.hasMoreTokens()) {
entry = e;
break;
} else {
current = ((HashedDir) e);
}
} else {
entry = e;
break;
}
}
return new FindRecursiveResult(current, entry, name);
}
public HashedEntry getEntry(String name) {
return map.get(name);
}

@ -1 +1 @@
Subproject commit 287d0b83b3c71fc7146e2b1cba7bc1760629ade1
Subproject commit 38788df61f8efc5453fe9c05017b629648b5fe6f