Cleanup output files when remap fails. Fixes #321

dev/0.11
modmuss50 2020-12-30 20:34:34 +00:00
parent 841fc5a4db
commit 11b62989e7
2 changed files with 9 additions and 9 deletions

View File

@ -107,6 +107,8 @@ public class ModCompileRemapper {
try { try {
ModProcessor.processMods(project, modDependencies); ModProcessor.processMods(project, modDependencies);
} catch (IOException e) { } catch (IOException e) {
// Failed to remap, lets clean up to ensure we try again next time
modDependencies.forEach(info -> info.getRemappedOutput().delete());
throw new RuntimeException("Failed to remap mods", e); throw new RuntimeException("Failed to remap mods", e);
} }
@ -170,14 +172,7 @@ public class ModCompileRemapper {
boolean refreshDeps = project.getGradle().getStartParameter().isRefreshDependencies(); boolean refreshDeps = project.getGradle().getStartParameter().isRefreshDependencies();
if (!remappedSources.exists() || sources.lastModified() <= 0 || sources.lastModified() > remappedSources.lastModified() || refreshDeps) { if (!remappedSources.exists() || sources.lastModified() <= 0 || sources.lastModified() > remappedSources.lastModified() || refreshDeps) {
try { sourceRemapper.scheduleRemapSources(sources, remappedSources, false, true); // Depenedency sources are used in ide only so don't need to be reproducable
sourceRemapper.scheduleRemapSources(sources, remappedSources, false, true); // Depenedency sources are used in ide only so don't need to be reproducable
// Set the remapped sources creation date to match the sources if we're likely succeeded in making it
remappedSources.setLastModified(sources.lastModified());
} catch (Exception e) {
e.printStackTrace();
}
} else { } else {
project.getLogger().info(remappedSources.getName() + " is up to date with " + sources.getName()); project.getLogger().info(remappedSources.getName() + " is up to date with " + sources.getName());
} }

View File

@ -72,13 +72,18 @@ public class SourceRemapper {
scheduleRemapSources(source, destination, false, true); // Not reproducable by default, old behavior scheduleRemapSources(source, destination, false, true); // Not reproducable by default, old behavior
} }
public void scheduleRemapSources(File source, File destination, boolean reproducibleFileOrder, boolean preserveFileTimestamps) throws Exception { public void scheduleRemapSources(File source, File destination, boolean reproducibleFileOrder, boolean preserveFileTimestamps) {
remapTasks.add((logger) -> { remapTasks.add((logger) -> {
try { try {
logger.progress("remapping sources - " + source.getName()); logger.progress("remapping sources - " + source.getName());
remapSourcesInner(source, destination); remapSourcesInner(source, destination);
ZipReprocessorUtil.reprocessZip(destination, reproducibleFileOrder, preserveFileTimestamps); ZipReprocessorUtil.reprocessZip(destination, reproducibleFileOrder, preserveFileTimestamps);
// Set the remapped sources creation date to match the sources if we're likely succeeded in making it
destination.setLastModified(source.lastModified());
} catch (Exception e) { } catch (Exception e) {
// Failed to remap, lets clean up to ensure we try again next time
destination.delete();
throw new RuntimeException("Failed to remap sources for " + source, e); throw new RuntimeException("Failed to remap sources for " + source, e);
} }
}); });