Remap less (#77)
* Avoid remapping jars every time Loom starts * Attempt to find installer JSON if it isn't found Remapping Fabric-Loader used to find it every time, now we might skip that we have to go looking for it * Log a little more when skipping things Makes it more clear cut when it is avoiding doing things compared to failing after tryingdev/0.11
parent
86ae0146d9
commit
03fb478166
|
@ -50,17 +50,21 @@ public class ModRemapperProvider extends DependencyProvider {
|
|||
//Output name should match whatever it's under as a dependency so Gradle finds it
|
||||
String outputNamePrefix = rds.substring(rds.indexOf(':') + 1).replace(':', '-') + verSuffix; //group:name:version -> name-version.mapped.yarn.5
|
||||
File modStore = extension.getRemappedModCache();
|
||||
File output = new File(modStore, outputNamePrefix + ".jar");
|
||||
if(output.exists()){
|
||||
output.delete();
|
||||
}
|
||||
|
||||
File output = new File(modStore, outputNamePrefix + ".jar");
|
||||
if (!output.exists() || input.lastModified() <= 0 || input.lastModified() > output.lastModified()) {
|
||||
//If the output doesn't exist, or appears to be outdated compared to the input we'll remap it
|
||||
ModProcessor.handleMod(input, output, project);
|
||||
|
||||
if (!output.exists()){
|
||||
throw new RuntimeException("Failed to remap mod");
|
||||
}
|
||||
|
||||
output.setLastModified(input.lastModified());
|
||||
} else {
|
||||
project.getLogger().info(output.getName() + " is up to date with " + input.getName());
|
||||
}
|
||||
|
||||
project.getDependencies().add(Constants.COMPILE_MODS_MAPPED, project.getDependencies().module(
|
||||
rds + verSuffix
|
||||
));
|
||||
|
@ -71,11 +75,23 @@ public class ModRemapperProvider extends DependencyProvider {
|
|||
if (sourcesFile.isPresent()) {
|
||||
project.getLogger().lifecycle(":providing " + rds + " sources");
|
||||
|
||||
File sources = sourcesFile.get();
|
||||
File remappedSources = new File(modStore, outputNamePrefix + "-sources.jar");
|
||||
|
||||
if (!remappedSources.exists() || sources.lastModified() <= 0 || sources.lastModified() > remappedSources.lastModified()) {
|
||||
try {
|
||||
SourceRemapper.remapSources(project, sourcesFile.get(), new File(modStore, outputNamePrefix + "-sources.jar"), true);
|
||||
SourceRemapper.remapSources(project, sources, remappedSources, true);
|
||||
|
||||
//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 {
|
||||
project.getLogger().info(remappedSources.getName() + " is up to date with " + sources.getName());
|
||||
}
|
||||
} else {
|
||||
project.getLogger().info(":skipping " + rds + " sources, not found");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -30,9 +30,11 @@ import net.fabricmc.loom.util.DependencyProvider.DependencyInfo;
|
|||
|
||||
import org.gradle.api.Project;
|
||||
import org.gradle.api.artifacts.Configuration;
|
||||
import org.gradle.api.artifacts.Dependency;
|
||||
import org.gradle.api.artifacts.ExternalModuleDependency;
|
||||
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
|
@ -87,6 +89,23 @@ public class LoomDependencyManager {
|
|||
});
|
||||
}
|
||||
|
||||
if (extension.getInstallerJson() == null) {
|
||||
//If we've not found the installer JSON we've probably skipped remapping Fabric loader, let's go looking
|
||||
project.getLogger().info("Didn't find installer JSON, searching through compileMods");
|
||||
Configuration configuration = project.getConfigurations().getByName(Constants.COMPILE_MODS);
|
||||
|
||||
for (Dependency dependency : configuration.getDependencies()) {
|
||||
DependencyInfo info = DependencyInfo.create(project, dependency, configuration);
|
||||
File input = info.resolveFile().orElseThrow(() -> new RuntimeException("Could not find dependency " + info));
|
||||
|
||||
ModProcessor.readInstallerJson(input, project);
|
||||
if (extension.getInstallerJson() != null) {
|
||||
project.getLogger().info("Found installer JSON in " + info);
|
||||
break; //Found it, probably don't need to look any further
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (extension.getInstallerJson() != null) {
|
||||
handleInstallerJson(extension.getInstallerJson(), project);
|
||||
} else {
|
||||
|
|
|
@ -190,7 +190,7 @@ public class ModProcessor {
|
|||
}
|
||||
}
|
||||
|
||||
private static void readInstallerJson(File file, Project project){
|
||||
static void readInstallerJson(File file, Project project){
|
||||
try {
|
||||
JarFile jarFile = new JarFile(file);
|
||||
|
||||
|
|
Loading…
Reference in New Issue