Feed codacy and leijurv at the same time?

This commit is contained in:
0x22 2018-12-01 13:22:11 -05:00
parent 0a2e45b64b
commit 7f73b4554a
No known key found for this signature in database
GPG Key ID: E6FBD2F5F69065FD
5 changed files with 90 additions and 75 deletions

View File

@ -107,7 +107,6 @@ jar {
task proguard(type: ProguardTask) { task proguard(type: ProguardTask) {
url 'https://downloads.sourceforge.net/project/proguard/proguard/6.0/proguard6.0.3.zip' url 'https://downloads.sourceforge.net/project/proguard/proguard/6.0/proguard6.0.3.zip'
extract 'proguard6.0.3/lib/proguard.jar' extract 'proguard6.0.3/lib/proguard.jar'
versionManifest 'https://launchermeta.mojang.com/mc/game/version_manifest.json'
} }
task createDist(type: CreateDistTask, dependsOn: proguard) task createDist(type: CreateDistTask, dependsOn: proguard)

View File

@ -20,9 +20,7 @@ package baritone.gradle.task;
import baritone.gradle.util.Determinizer; import baritone.gradle.util.Determinizer;
import baritone.gradle.util.MappingType; import baritone.gradle.util.MappingType;
import baritone.gradle.util.ReobfWrapper; import baritone.gradle.util.ReobfWrapper;
import com.google.gson.*;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.nio.file.StandardCopyOption;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.gradle.api.NamedDomainObjectContainer; import org.gradle.api.NamedDomainObjectContainer;
@ -59,10 +57,6 @@ public class ProguardTask extends BaritoneGradleTask {
@Input @Input
private String extract; private String extract;
@Input
private String versionManifest;
private Map<String, String> versionDownloadMap;
private List<String> requiredLibraries; private List<String> requiredLibraries;
@TaskAction @TaskAction
@ -74,7 +68,6 @@ public class ProguardTask extends BaritoneGradleTask {
downloadProguard(); downloadProguard();
extractProguard(); extractProguard();
generateConfigs(); generateConfigs();
downloadVersionManifest();
acquireDependencies(); acquireDependencies();
proguardApi(); proguardApi();
proguardStandalone(); proguardStandalone();
@ -139,20 +132,6 @@ public class ProguardTask extends BaritoneGradleTask {
}); });
} }
private void downloadVersionManifest() throws Exception {
Path manifestJson = getTemporaryFile(VERSION_MANIFEST);
write(new URL(this.versionManifest).openStream(), manifestJson);
// Place all the versions in the map with their download URL
this.versionDownloadMap = new HashMap<>();
JsonObject json = readJson(Files.readAllLines(manifestJson)).getAsJsonObject();
JsonArray versions = json.getAsJsonArray("versions");
versions.forEach(element -> {
JsonObject object = element.getAsJsonObject();
this.versionDownloadMap.put(object.get("id").getAsString(), object.get("url").getAsString());
});
}
private void acquireDependencies() throws Exception { private void acquireDependencies() throws Exception {
// Create a map of all of the dependencies that we are able to access in this project // Create a map of all of the dependencies that we are able to access in this project
@ -173,7 +152,7 @@ public class ProguardTask extends BaritoneGradleTask {
// copy from the forgegradle cache // copy from the forgegradle cache
if (lib.equals("minecraft")) { if (lib.equals("minecraft")) {
final Path cachedJar = getMinecraftJar(); final Path cachedJar = getMinecraftJar();
final Path inTempDir = getTemporaryFile("tempLibraries/" + "minecraft.jar"); final Path inTempDir = getTemporaryFile("tempLibraries/minecraft.jar");
// TODO: maybe try not to copy every time // TODO: maybe try not to copy every time
Files.copy(cachedJar, inTempDir, REPLACE_EXISTING); Files.copy(cachedJar, inTempDir, REPLACE_EXISTING);
@ -200,14 +179,14 @@ public class ProguardTask extends BaritoneGradleTask {
} }
} }
// a bunch of bullshit to get the path to the cached jar // a bunch of epic stuff to get the path to the cached jar
private Path getMinecraftJar() throws Exception { private Path getMinecraftJar() throws Exception {
MappingType mappingType; MappingType mappingType;
try { try {
mappingType = getMappingType(); mappingType = getMappingType();
} catch (Exception e) { } catch (Exception e) {
System.err.println("Failed to get mapping type, assuming NOTCH"); System.err.println("Failed to get mapping type, assuming NOTCH.");
mappingType = MappingType.SEARGE; mappingType = MappingType.NOTCH;
} }
String suffix; String suffix;
@ -219,12 +198,12 @@ public class ProguardTask extends BaritoneGradleTask {
suffix = "-srgBin"; suffix = "-srgBin";
break; break;
case CUSTOM: case CUSTOM:
throw new IllegalStateException("custom mappings not supported"); throw new IllegalStateException("Custom mappings not supported!");
default: default:
throw new IllegalStateException("Unknown mapping type: " + mappingType); throw new IllegalStateException("Unknown mapping type: " + mappingType);
} }
DefaultConvention convention = (DefaultConvention)this.getProject().getConvention(); DefaultConvention convention = (DefaultConvention) this.getProject().getConvention();
final Object extension = convention.getAsMap().get("minecraft"); final Object extension = convention.getAsMap().get("minecraft");
Objects.requireNonNull(extension); Objects.requireNonNull(extension);
@ -237,24 +216,23 @@ public class ProguardTask extends BaritoneGradleTask {
Field replacement_replaceMap = class_replacementProvider.getDeclaredField("replaceMap"); Field replacement_replaceMap = class_replacementProvider.getDeclaredField("replaceMap");
replacement_replaceMap.setAccessible(true); replacement_replaceMap.setAccessible(true);
final Map<String, Object> replacements = (Map)replacement_replaceMap.get(replacer); final Map<String, Object> replacements = (Map) replacement_replaceMap.get(replacer);
final String cacheDir = replacements.get("CACHE_DIR").toString() + "/net/minecraft"; final String cacheDir = replacements.get("CACHE_DIR").toString() + "/net/minecraft";
final String mcVersion = replacements.get("MC_VERSION").toString(); final String mcVersion = replacements.get("MC_VERSION").toString();
final String mcpInsert = replacements.get("MAPPING_CHANNEL").toString() + "/" + replacements.get("MAPPING_VERSION").toString(); final String mcpInsert = replacements.get("MAPPING_CHANNEL").toString() + "/" + replacements.get("MAPPING_VERSION").toString();
final String fullJarName = "minecraft" + "-" + mcVersion + suffix + ".jar"; final String fullJarName = "minecraft-" + mcVersion + suffix + ".jar";
final String baseDir = String.format("%s/minecraft/%s/", cacheDir, mcVersion); final String baseDir = String.format("%s/minecraft/%s/", cacheDir, mcVersion);
String jarPath; String jarPath;
if (mappingType == MappingType.SEARGE) { if (mappingType == MappingType.SEARGE) {
jarPath = String.format("%s/%s/%s", baseDir, mcpInsert, fullJarName); jarPath = String.format("%s/%s/%s", baseDir, mcpInsert, fullJarName);
} else { } else {
jarPath = baseDir + fullJarName; jarPath = baseDir + fullJarName;
} }
jarPath = jarPath jarPath = jarPath
.replace("/", File.separator) .replace("/", File.separator)
.replace("\\", File.separator);// fucking regex .replace("\\", File.separator); // hecking regex
return new File(jarPath).toPath(); return new File(jarPath).toPath();
} }
@ -266,10 +244,11 @@ public class ProguardTask extends BaritoneGradleTask {
final List<MappingType> mappingTypes = getUsedMappingTypes(reobf); final List<MappingType> mappingTypes = getUsedMappingTypes(reobf);
final long mappingTypesUsed = mappingTypes.size(); final long mappingTypesUsed = mappingTypes.size();
if (mappingTypesUsed == 0) if (mappingTypesUsed == 0) {
throw new IllegalStateException("Failed to find mapping type (no jar task?)"); throw new IllegalStateException("Failed to find mapping type (no jar task?)");
if (mappingTypesUsed > 1) } if (mappingTypesUsed > 1) {
throw new IllegalStateException("Ambiguous mapping type (multiple jars with different mapping types?)"); throw new IllegalStateException("Ambiguous mapping type (multiple jars with different mapping types?)");
}
return mappingTypes.get(0); return mappingTypes.get(0);
} }
@ -306,10 +285,6 @@ public class ProguardTask extends BaritoneGradleTask {
this.extract = extract; this.extract = extract;
} }
public void setVersionManifest(String versionManifest) {
this.versionManifest = versionManifest;
}
private void runProguard(Path config) throws Exception { private void runProguard(Path config) throws Exception {
// Delete the existing proguard output file. Proguard probably handles this already, but why not do it ourselves // Delete the existing proguard output file. Proguard probably handles this already, but why not do it ourselves
if (Files.exists(this.proguardOut)) { if (Files.exists(this.proguardOut)) {

View File

@ -1,9 +1,29 @@
/*
* This file is part of Baritone.
*
* Baritone is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Baritone is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
*/
package baritone.gradle.util; package baritone.gradle.util;
// this should be the same as in ForgeGradle /**
// credit 2 asmlibgradle (i made this btw) * All credits go to AsmLibGradle and its contributors.
*
* @see <a href="https://github.com/pozzed/AsmLibGradle/blob/8f917dbc3939eab7a3d9daf54d9d285fdf34f4b2/src/main/java/net/futureclient/asmlib/forgegradle/MappingType.java">Original Source</a>
*/
public enum MappingType { public enum MappingType {
SEARGE, SEARGE,
NOTCH, NOTCH,
CUSTOM // forgegradle CUSTOM // forgegradle
} }

View File

@ -1,40 +1,63 @@
/*
* This file is part of Baritone.
*
* Baritone is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Baritone is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
*/
package baritone.gradle.util; package baritone.gradle.util;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.Objects; import java.util.Objects;
/**
* All credits go to AsmLibGradle and its contributors.
*
* @see <a href="https://github.com/pozzed/AsmLibGradle/blob/8f917dbc3939eab7a3d9daf54d9d285fdf34f4b2/src/main/java/net/futureclient/asmlib/forgegradle/ReobfWrapper.java">Original Source</a>
*/
public class ReobfWrapper { public class ReobfWrapper {
private final Object instance; private final Object instance;
private final Class<?> type; private final Class<?> type;
public ReobfWrapper(Object instance) { public ReobfWrapper(Object instance) {
this.instance = instance; this.instance = instance;
Objects.requireNonNull(instance); Objects.requireNonNull(instance);
this.type = instance.getClass(); this.type = instance.getClass();
}
public String getName() {
try {
Field nameField = type.getDeclaredField("name");
nameField.setAccessible(true);
return (String)nameField.get(this.instance);
} catch (ReflectiveOperationException ex) {
throw new Error(ex);
} }
}
public MappingType getMappingType() { public String getName() {
try { try {
Field enumField = type.getDeclaredField("mappingType"); Field nameField = type.getDeclaredField("name");
enumField.setAccessible(true); nameField.setAccessible(true);
Enum<?> meme = (Enum<?>) enumField.get(this.instance); return (String) nameField.get(this.instance);
MappingType mappingType = MappingType.values()[meme.ordinal()]; } catch (ReflectiveOperationException ex) {
if (!meme.name().equals(mappingType.name())) throw new IllegalStateException(ex);
throw new IllegalStateException("ForgeGradle ReobfMappingType is not equivalent to MappingType (version error?)"); }
return mappingType; }
} catch (ReflectiveOperationException ex) {
throw new Error(ex); public MappingType getMappingType() {
try {
Field enumField = type.getDeclaredField("mappingType");
enumField.setAccessible(true);
Enum<?> aEnum = (Enum<?>) enumField.get(this.instance);
MappingType mappingType = MappingType.values()[aEnum.ordinal()];
if (!aEnum.name().equals(mappingType.name())) {
throw new IllegalStateException("ForgeGradle ReobfMappingType is not equivalent to MappingType (version error?)");
}
return mappingType;
} catch (ReflectiveOperationException ex) {
throw new IllegalStateException(ex);
}
} }
}
} }

View File

@ -31,10 +31,8 @@
# copy all necessary libraries into tempLibraries to build # copy all necessary libraries into tempLibraries to build
-libraryjars 'tempLibraries/minecraft.jar'
# The correct jar will be copied from the forgegradle cache based on the mapping type being compiled with # The correct jar will be copied from the forgegradle cache based on the mapping type being compiled with
#-libraryjars 'tempLibraries/minecraft.jar' -libraryjars 'tempLibraries/minecraft.jar'
-libraryjars 'tempLibraries/SimpleTweaker-1.2.jar' -libraryjars 'tempLibraries/SimpleTweaker-1.2.jar'