mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-16 15:26:27 -04:00
fix: delete installed curse when some mods failed
This commit is contained in:
parent
d6d8c60e5b
commit
084b15e113
@ -54,6 +54,10 @@ public final class CurseCompletionTask extends Task<Void> {
|
|||||||
private CurseManifest manifest;
|
private CurseManifest manifest;
|
||||||
private final List<Task<?>> dependencies = new LinkedList<>();
|
private final List<Task<?>> dependencies = new LinkedList<>();
|
||||||
|
|
||||||
|
private final AtomicBoolean allNameKnown = new AtomicBoolean(true);
|
||||||
|
private final AtomicInteger finished = new AtomicInteger(0);
|
||||||
|
private final AtomicBoolean notFound = new AtomicBoolean(false);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
*
|
*
|
||||||
@ -93,6 +97,11 @@ public final class CurseCompletionTask extends Task<Void> {
|
|||||||
return dependencies;
|
return dependencies;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isRelyingOnDependencies() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute() throws Exception {
|
public void execute() throws Exception {
|
||||||
if (manifest == null)
|
if (manifest == null)
|
||||||
@ -100,10 +109,6 @@ public final class CurseCompletionTask extends Task<Void> {
|
|||||||
|
|
||||||
File root = repository.getVersionRoot(version);
|
File root = repository.getVersionRoot(version);
|
||||||
|
|
||||||
AtomicBoolean flag = new AtomicBoolean(true);
|
|
||||||
AtomicInteger finished = new AtomicInteger(0);
|
|
||||||
AtomicBoolean notFound = new AtomicBoolean(false);
|
|
||||||
|
|
||||||
// Because in China, Curse is too difficult to visit,
|
// Because in China, Curse is too difficult to visit,
|
||||||
// if failed, ignore it and retry next time.
|
// if failed, ignore it and retry next time.
|
||||||
CurseManifest newManifest = manifest.setFiles(
|
CurseManifest newManifest = manifest.setFiles(
|
||||||
@ -132,7 +137,7 @@ public final class CurseCompletionTask extends Task<Void> {
|
|||||||
|
|
||||||
} catch (IOException ioe) {
|
} catch (IOException ioe) {
|
||||||
Logging.LOG.log(Level.WARNING, "Unable to fetch the file name of URL: " + file.getUrl(), ioe);
|
Logging.LOG.log(Level.WARNING, "Unable to fetch the file name of URL: " + file.getUrl(), ioe);
|
||||||
flag.set(false);
|
allNameKnown.set(false);
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
@ -149,16 +154,20 @@ public final class CurseCompletionTask extends Task<Void> {
|
|||||||
.setCaching(true));
|
.setCaching(true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Let this task fail if the curse manifest has not been completed.
|
|
||||||
// But continue other downloads.
|
|
||||||
if (!flag.get() || notFound.get())
|
|
||||||
dependencies.add(Task.runAsync(() -> {
|
|
||||||
if (notFound.get())
|
|
||||||
throw new CurseCompletionException(new FileNotFoundException());
|
|
||||||
else
|
|
||||||
throw new CurseCompletionException();
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean doPostExecute() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void postExecute() throws Exception {
|
||||||
|
// Let this task fail if the curse manifest has not been completed.
|
||||||
|
// But continue other downloads.
|
||||||
|
if (notFound.get())
|
||||||
|
throw new CurseCompletionException(new FileNotFoundException());
|
||||||
|
if (!allNameKnown.get() || !isDependenciesSucceeded())
|
||||||
|
throw new CurseCompletionException();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user