Load project deps from within gradle, should allow moduals to be built

dev/0.11
modmuss50 2016-08-17 00:30:48 +01:00
parent ee4708e486
commit c89344527b
20 changed files with 103 additions and 59 deletions

View File

@ -22,13 +22,18 @@
* SOFTWARE.
*/
package net.fabric.loom;
package net.fabricmc.loom;
import net.fabric.loom.util.Constants;
import com.google.gson.Gson;
import net.fabricmc.loom.task.DownloadTask;
import net.fabricmc.loom.util.Constants;
import com.google.common.collect.ImmutableMap;
import net.fabricmc.loom.util.Version;
import org.gradle.api.Action;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.Task;
import org.gradle.api.artifacts.repositories.FlatDirectoryArtifactRepository;
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.plugins.JavaPluginConvention;
@ -37,6 +42,10 @@ import org.gradle.api.tasks.javadoc.Javadoc;
import org.gradle.plugins.ide.eclipse.model.EclipseModel;
import org.gradle.plugins.ide.idea.model.IdeaModel;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class AbstractPlugin implements Plugin<Project> {
protected Project project;
@ -138,5 +147,34 @@ public class AbstractPlugin implements Plugin<Project> {
Javadoc javadoc = (Javadoc) project.getTasks().getByName(JavaPlugin.JAVADOC_TASK_NAME);
javadoc.setClasspath(main.getOutput().plus(main.getCompileClasspath()));
project.afterEvaluate(project1 -> {
LoomGradleExtension extension = project1.getExtensions().getByType(LoomGradleExtension.class);
project1.getRepositories().flatDir(flatDirectoryArtifactRepository -> {
flatDirectoryArtifactRepository.dir(Constants.CACHE_FILES);
flatDirectoryArtifactRepository.setName("LoomCacheFiles");
});
Gson gson = new Gson();
try {
DownloadTask.downloadMcJson(extension, project1.getLogger());
Version version = gson.fromJson(new FileReader(Constants.MINECRAFT_JSON.get(extension)), Version.class);
for (Version.Library library : version.libraries) {
if (library.allowed() && library.getFile() != null) {
String configName = Constants.CONFIG_MC_DEPENDENCIES;
if (library.name.contains("java3d") || library.name.contains("paulscode") || library.name.contains("lwjgl") || library.name.contains("twitch") || library.name.contains("jinput")) {
configName = Constants.CONFIG_MC_DEPENDENCIES_CLIENT;
}
project1.getDependencies().add(configName, library.getArtifactName());
}
}
} catch (IOException e) {
e.printStackTrace();
}
project1.getDependencies().add(Constants.CONFIG_MC_DEPENDENCIES, "net.minecraft:" + Constants.MINECRAFT_CLIENT_MAPPED_JAR.get(extension).getName().replace(".jar", ""));
});
}
}

View File

@ -22,7 +22,7 @@
* SOFTWARE.
*/
package net.fabric.loom;
package net.fabricmc.loom;
public class LoomGradleExtension {
public String version;

View File

@ -22,12 +22,12 @@
* SOFTWARE.
*/
package net.fabric.loom;
package net.fabricmc.loom;
import net.fabric.loom.task.DownloadTask;
import net.fabric.loom.task.ExtractNativesTask;
import net.fabric.loom.task.GenIdeaProjectTask;
import net.fabric.loom.task.MapJarsTask;
import net.fabricmc.loom.task.DownloadTask;
import net.fabricmc.loom.task.ExtractNativesTask;
import net.fabricmc.loom.task.GenIdeaProjectTask;
import net.fabricmc.loom.task.MapJarsTask;
import org.gradle.api.DefaultTask;
import org.gradle.api.Project;

View File

@ -22,10 +22,10 @@
* SOFTWARE.
*/
package net.fabric.loom.task;
package net.fabricmc.loom.task;
import net.fabric.loom.util.Constants;
import net.fabric.loom.util.progress.ProgressLogger;
import net.fabricmc.loom.util.Constants;
import net.fabricmc.loom.util.progress.ProgressLogger;
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.OutputFile;

View File

@ -22,27 +22,29 @@
* SOFTWARE.
*/
package net.fabric.loom.task;
package net.fabricmc.loom.task;
import net.fabric.loom.util.Constants;
import net.fabric.loom.util.Version;
import net.fabricmc.loom.util.Constants;
import net.fabricmc.loom.util.Version;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import net.fabricmc.loom.LoomGradleExtension;
import net.fabricmc.loom.util.Checksum;
import net.fabricmc.loom.util.ManifestVersion;
import net.fabricmc.loom.util.assets.AssetIndex;
import net.fabricmc.loom.util.assets.AssetObject;
import net.fabricmc.loom.util.progress.ProgressLogger;
import org.apache.commons.io.FileUtils;
import org.gradle.api.DefaultTask;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.artifacts.dsl.DependencyHandler;
import org.gradle.api.logging.Logger;
import org.gradle.api.tasks.TaskAction;
import net.fabric.loom.LoomGradleExtension;
import net.fabric.loom.util.Checksum;
import net.fabric.loom.util.ManifestVersion;
import net.fabric.loom.util.assets.AssetIndex;
import net.fabric.loom.util.assets.AssetObject;
import net.fabric.loom.util.progress.ProgressLogger;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Map;
import java.util.Optional;
@ -53,19 +55,7 @@ public class DownloadTask extends DefaultTask {
try {
LoomGradleExtension extension = this.getProject().getExtensions().getByType(LoomGradleExtension.class);
if (!Constants.MINECRAFT_JSON.get(extension).exists()) {
this.getLogger().lifecycle(":downloading minecraft json");
FileUtils.copyURLToFile(new URL("https://launchermeta.mojang.com/mc/game/version_manifest.json"), Constants.VERSION_MANIFEST);
ManifestVersion mcManifest = new GsonBuilder().create().fromJson(FileUtils.readFileToString(Constants.VERSION_MANIFEST), ManifestVersion.class);
Optional<ManifestVersion.Versions> optionalVersion = mcManifest.versions.stream().filter(versions -> versions.id.equalsIgnoreCase(extension.version)).findFirst();
if (optionalVersion.isPresent()) {
FileUtils.copyURLToFile(new URL(optionalVersion.get().url), Constants.MINECRAFT_JSON.get(extension));
} else {
this.getLogger().info(":failed downloading minecraft json");
throw new RuntimeException("Failed downloading Minecraft json");
}
}
downloadMcJson(extension, getLogger());
Gson gson = new Gson();
Version version = gson.fromJson(new FileReader(Constants.MINECRAFT_JSON.get(extension)), Version.class);
@ -145,4 +135,20 @@ public class DownloadTask extends DefaultTask {
e.printStackTrace();
}
}
public static void downloadMcJson(LoomGradleExtension extension, Logger logger) throws IOException {
if (!Constants.MINECRAFT_JSON.get(extension).exists()) {
logger.lifecycle(":downloading minecraft json");
FileUtils.copyURLToFile(new URL("https://launchermeta.mojang.com/mc/game/version_manifest.json"), Constants.VERSION_MANIFEST);
ManifestVersion mcManifest = new GsonBuilder().create().fromJson(FileUtils.readFileToString(Constants.VERSION_MANIFEST), ManifestVersion.class);
Optional<ManifestVersion.Versions> optionalVersion = mcManifest.versions.stream().filter(versions -> versions.id.equalsIgnoreCase(extension.version)).findFirst();
if (optionalVersion.isPresent()) {
FileUtils.copyURLToFile(new URL(optionalVersion.get().url), Constants.MINECRAFT_JSON.get(extension));
} else {
logger.info(":failed downloading minecraft json");
throw new RuntimeException("Failed downloading Minecraft json");
}
}
}
}

View File

@ -22,9 +22,9 @@
* SOFTWARE.
*/
package net.fabric.loom.task;
package net.fabricmc.loom.task;
import net.fabric.loom.util.Constants;
import net.fabricmc.loom.util.Constants;
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.TaskAction;
import org.zeroturnaround.zip.ZipUtil;

View File

@ -22,12 +22,12 @@
* SOFTWARE.
*/
package net.fabric.loom.task;
package net.fabricmc.loom.task;
import net.fabric.loom.LoomGradleExtension;
import net.fabric.loom.util.Constants;
import net.fabric.loom.util.IdeaRunConfig;
import net.fabric.loom.util.Version;
import net.fabricmc.loom.LoomGradleExtension;
import net.fabricmc.loom.util.Constants;
import net.fabricmc.loom.util.IdeaRunConfig;
import net.fabricmc.loom.util.Version;
import com.google.gson.Gson;
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.TaskAction;

View File

@ -22,13 +22,13 @@
* SOFTWARE.
*/
package net.fabric.loom.task;
package net.fabricmc.loom.task;
import cuchaz.enigma.Deobfuscator;
import cuchaz.enigma.mapping.MappingsEnigmaReader;
import cuchaz.enigma.throwables.MappingParseException;
import net.fabric.loom.LoomGradleExtension;
import net.fabric.loom.util.Constants;
import net.fabricmc.loom.LoomGradleExtension;
import net.fabricmc.loom.util.Constants;
import org.apache.commons.io.FileUtils;
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.TaskAction;

View File

@ -22,7 +22,7 @@
* SOFTWARE.
*/
package net.fabric.loom.util;
package net.fabricmc.loom.util;
import com.google.common.hash.HashCode;
import com.google.common.hash.Hashing;

View File

@ -22,10 +22,10 @@
* SOFTWARE.
*/
package net.fabric.loom.util;
package net.fabricmc.loom.util;
import net.fabric.loom.util.delayed.IDelayed;
import net.fabric.loom.util.delayed.DelayedFile;
import net.fabricmc.loom.util.delayed.IDelayed;
import net.fabricmc.loom.util.delayed.DelayedFile;
import java.io.File;
import java.net.URL;

View File

@ -22,7 +22,7 @@
* SOFTWARE.
*/
package net.fabric.loom.util;
package net.fabricmc.loom.util;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableMap;

View File

@ -22,7 +22,7 @@
* SOFTWARE.
*/
package net.fabric.loom.util;
package net.fabricmc.loom.util;
import java.util.ArrayList;
import java.util.List;

View File

@ -22,7 +22,7 @@
* SOFTWARE.
*/
package net.fabric.loom.util;
package net.fabricmc.loom.util;
public class OperatingSystem {
public static String getOS() {

View File

@ -22,7 +22,7 @@
* SOFTWARE.
*/
package net.fabric.loom.util;
package net.fabricmc.loom.util;
import com.google.gson.JsonObject;

View File

@ -22,7 +22,7 @@
* SOFTWARE.
*/
package net.fabric.loom.util.assets;
package net.fabricmc.loom.util.assets;
import java.util.HashSet;
import java.util.LinkedHashMap;

View File

@ -22,7 +22,7 @@
* SOFTWARE.
*/
package net.fabric.loom.util.assets;
package net.fabricmc.loom.util.assets;
public class AssetObject {
private String hash;

View File

@ -22,9 +22,9 @@
* SOFTWARE.
*/
package net.fabric.loom.util.delayed;
package net.fabricmc.loom.util.delayed;
import net.fabric.loom.LoomGradleExtension;
import net.fabricmc.loom.LoomGradleExtension;
import java.io.File;
import java.util.function.Function;

View File

@ -22,9 +22,9 @@
* SOFTWARE.
*/
package net.fabric.loom.util.delayed;
package net.fabricmc.loom.util.delayed;
import net.fabric.loom.LoomGradleExtension;
import net.fabricmc.loom.LoomGradleExtension;
public interface IDelayed<T> {
T get(LoomGradleExtension extension);

View File

@ -22,7 +22,7 @@
* SOFTWARE.
*/
package net.fabric.loom.util.progress;
package net.fabricmc.loom.util.progress;
import org.gradle.api.Project;

View File

@ -1 +1 @@
implementation-class=net.fabric.loom.LoomGradlePlugin
implementation-class=net.fabricmc.loom.LoomGradlePlugin