Skip to content

Commit 5da89be

Browse files
authored
Improve the error description of "Unable to find suitable version" (#649)
1 parent 990c2de commit 5da89be

File tree

7 files changed

+35
-5
lines changed

7 files changed

+35
-5
lines changed

src/main/java/me/itzg/helpers/curseforge/CurseForgeInstaller.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -971,11 +971,12 @@ private void prepareModLoader(String id, String minecraftVersion) {
971971
throw new GenericException("Unknown modloader ID: " + id);
972972
}
973973

974+
final String provider = parts[0];
974975
final String loaderVersion = parts.length == 2 ? parts[1] : parts[2];
975976

976977
try (SharedFetch sharedFetch = Fetch.sharedFetch("install-curseforge", sharedFetchOptions)) {
977978

978-
switch (parts[0]) {
979+
switch (provider) {
979980
case "forge":
980981
prepareForge(sharedFetch, minecraftVersion, loaderVersion);
981982
break;
@@ -989,8 +990,11 @@ private void prepareModLoader(String id, String minecraftVersion) {
989990
break;
990991

991992
default:
992-
throw new InvalidParameterException(String.format("ModLoader %s is not yet supported", parts[0]));
993+
throw new InvalidParameterException(String.format("ModLoader %s is not yet supported", provider));
993994
}
995+
} catch (InvalidParameterException e) {
996+
throw new GenericException("Unable to prepare modpack's mod loader "
997+
+ provider + " " + loaderVersion + " for Minecraft " + minecraftVersion, e);
994998
}
995999
}
9961000

src/main/java/me/itzg/helpers/errors/ExceptionHandler.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ public int handleExecutionException(Exception e, CommandLine commandLine, ParseR
2828
log.debug("Invalid parameter details", e);
2929
}
3030
else if (e instanceof FailedRequestException) {
31-
logUnexpectedException(e, commandLine);
32-
log.debug("Failed request details: {}", e.toString());
31+
logExceptionWithoutStacktrace(e, commandLine);
32+
log.debug("Failed request details", e);
3333
}
3434
else if (e instanceof RateLimitException) {
3535
logUnexpectedException(e, commandLine);
@@ -55,4 +55,12 @@ private static void logUnexpectedException(Exception e, CommandLine commandLine)
5555
e
5656
);
5757
}
58+
59+
private static void logExceptionWithoutStacktrace(Exception e, CommandLine commandLine) {
60+
log.error("'{}' command failed. Version is {}: {}",
61+
commandLine.getCommandName(),
62+
McImageHelper.getVersion(),
63+
ExceptionDetailer.buildCausalMessages(e)
64+
);
65+
}
5866
}

src/main/java/me/itzg/helpers/forge/ForgeInstaller.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ public void install(
5353

5454
final VersionPair resolved = installerResolver.resolve();
5555
if (resolved == null) {
56-
throw new InvalidParameterException("Unable to find suitable version");
56+
throw new InvalidParameterException("Unable to find suitable version for " +
57+
installerResolver.getDescription());
5758
}
5859
log.debug("Resolved installer version={}", resolved);
5960

src/main/java/me/itzg/helpers/forge/ForgeInstallerResolver.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,11 @@ public void cleanup(Path forgeInstallerJar) {
109109
}
110110
}
111111

112+
@Override
113+
public String getDescription() {
114+
return String.format("Minecraft %s Forge %s", requestedMinecraftVersion, requestedForgeVersion);
115+
}
116+
112117
private PromotionsSlim loadPromotions() {
113118
return sharedFetch.fetch(URI.create(promotionsUrl))
114119
.userAgentCommand("forge")

src/main/java/me/itzg/helpers/forge/InstallerResolver.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ public interface InstallerResolver {
99
Path download(String minecraftVersion, String forgeVersion, Path outputDir);
1010

1111
void cleanup(Path forgeInstallerJar);
12+
13+
String getDescription();
1214
}

src/main/java/me/itzg/helpers/forge/NeoForgeInstallerResolver.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,4 +223,9 @@ public void cleanup(Path forgeInstallerJar) {
223223
log.warn("Failed to delete NeoForge installer", e);
224224
}
225225
}
226+
227+
@Override
228+
public String getDescription() {
229+
return String.format("Minecraft %s NeoForge %s", requestedMinecraftVersion, requestedNeoForgeVersion);
230+
}
226231
}

src/main/java/me/itzg/helpers/forge/ProvidedInstallerResolver.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ public void cleanup(Path forgeInstallerJar) {
5050
// nothing needed
5151
}
5252

53+
@Override
54+
public String getDescription() {
55+
return String.format("Provided installer %s", forgeInstaller.toString());
56+
}
57+
5358
private VersionPair extractVersion(Path forgeInstaller) throws IOException {
5459

5560
final VersionPair fromVersionJson = IoStreams.readFileFromZip(forgeInstaller, "version.json",

0 commit comments

Comments
 (0)