Replace .pack.gz with .pack.xz

This commit is contained in:
yushijinhun 2018-08-05 01:02:42 +08:00
parent ace830bced
commit 2b8843ca19
No known key found for this signature in database
GPG Key ID: 5BC167F73EA558E4
4 changed files with 25 additions and 13 deletions

View File

@ -6,10 +6,12 @@ import java.security.spec.PKCS8EncodedKeySpec
import java.util.jar.JarFile import java.util.jar.JarFile
import java.util.jar.JarOutputStream import java.util.jar.JarOutputStream
import java.util.jar.Pack200 import java.util.jar.Pack200
import java.util.zip.GZIPOutputStream
import java.util.zip.ZipFile import java.util.zip.ZipFile
import java.nio.file.Files import java.nio.file.Files
import org.tukaani.xz.LZMA2Options
import org.tukaani.xz.XZOutputStream
def buildnumber = System.getenv("BUILD_NUMBER") ?: "SNAPSHOT" def buildnumber = System.getenv("BUILD_NUMBER") ?: "SNAPSHOT"
def versionroot = System.getenv("VERSION_ROOT") ?: "3.1" def versionroot = System.getenv("VERSION_ROOT") ?: "3.1"
version = versionroot + '.' + buildnumber version = versionroot + '.' + buildnumber
@ -87,9 +89,9 @@ def createExecutable(String suffix, String header) {
createChecksum(output) createChecksum(output)
} }
task makePackGz(dependsOn: jar) doLast { task makePackXz(dependsOn: jar) doLast {
def outputPath = new File(jar.archivePath.parentFile, jar.archivePath.name[0..-4] + "pack.gz") def outputPath = new File(jar.archivePath.parentFile, jar.archivePath.name[0..-4] + "pack.xz")
new GZIPOutputStream(outputPath.newOutputStream()).withCloseable { out -> new XZOutputStream(outputPath.newOutputStream(), new LZMA2Options(9)).withCloseable { out ->
new JarFile(jar.archivePath).withCloseable { jarFile -> packer.pack(jarFile, out) } new JarFile(jar.archivePath).withCloseable { jarFile -> packer.pack(jarFile, out) }
} }
@ -101,5 +103,5 @@ task makeExecutables(dependsOn: jar) doLast {
createExecutable("exe", "src/main/resources/assets/HMCLauncher.exe") createExecutable("exe", "src/main/resources/assets/HMCLauncher.exe")
} }
build.dependsOn makePackGz build.dependsOn makePackXz
build.dependsOn makeExecutables build.dependsOn makeExecutables

View File

@ -30,10 +30,10 @@ import java.util.jar.JarFile;
import java.util.jar.JarOutputStream; import java.util.jar.JarOutputStream;
import java.util.jar.Pack200; import java.util.jar.Pack200;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.zip.GZIPInputStream;
import org.jackhuang.hmcl.Launcher; import org.jackhuang.hmcl.Launcher;
import org.jackhuang.hmcl.task.FileDownloadTask; import org.jackhuang.hmcl.task.FileDownloadTask;
import org.tukaani.xz.XZInputStream;
/** /**
* A class used to manage the local HMCL repository. * A class used to manage the local HMCL repository.
@ -89,10 +89,10 @@ final class LocalRepository {
writeToStorage(downloaded, false); writeToStorage(downloaded, false);
break; break;
case PACK_GZ: case PACK_XZ:
Path unpacked = Files.createTempFile("hmcl-update-unpack-", null); Path unpacked = Files.createTempFile("hmcl-update-unpack-", null);
try { try {
try (InputStream in = new GZIPInputStream(Files.newInputStream(downloaded)); try (InputStream in = new XZInputStream(Files.newInputStream(downloaded));
JarOutputStream out = new JarOutputStream(Files.newOutputStream(unpacked))) { JarOutputStream out = new JarOutputStream(Files.newOutputStream(unpacked))) {
Pack200.newUnpacker().unpack(in, out); Pack200.newUnpacker().unpack(in, out);
} }

View File

@ -36,10 +36,10 @@ public class RemoteVersion {
String version = Optional.ofNullable(response.get("version")).map(JsonElement::getAsString).orElseThrow(() -> new IOException("version is missing")); String version = Optional.ofNullable(response.get("version")).map(JsonElement::getAsString).orElseThrow(() -> new IOException("version is missing"));
String jarUrl = Optional.ofNullable(response.get("jar")).map(JsonElement::getAsString).orElse(null); String jarUrl = Optional.ofNullable(response.get("jar")).map(JsonElement::getAsString).orElse(null);
String jarHash = Optional.ofNullable(response.get("jarsha1")).map(JsonElement::getAsString).orElse(null); String jarHash = Optional.ofNullable(response.get("jarsha1")).map(JsonElement::getAsString).orElse(null);
String packUrl = Optional.ofNullable(response.get("pack")).map(JsonElement::getAsString).orElse(null); String packXZUrl = Optional.ofNullable(response.get("packxz")).map(JsonElement::getAsString).orElse(null);
String packHash = Optional.ofNullable(response.get("packsha1")).map(JsonElement::getAsString).orElse(null); String packXZHash = Optional.ofNullable(response.get("packxzsha1")).map(JsonElement::getAsString).orElse(null);
if (packUrl != null && packHash != null) { if (packXZUrl != null && packXZHash != null) {
return new RemoteVersion(version, packUrl, Type.PACK_GZ, new IntegrityCheck("SHA-1", packHash)); return new RemoteVersion(version, packXZUrl, Type.PACK_XZ, new IntegrityCheck("SHA-1", packXZHash));
} else if (jarUrl != null && jarHash != null) { } else if (jarUrl != null && jarHash != null) {
return new RemoteVersion(version, jarUrl, Type.JAR, new IntegrityCheck("SHA-1", jarHash)); return new RemoteVersion(version, jarUrl, Type.JAR, new IntegrityCheck("SHA-1", jarHash));
} else { } else {
@ -84,7 +84,7 @@ public class RemoteVersion {
} }
public enum Type { public enum Type {
PACK_GZ, PACK_XZ,
JAR JAR
} }
} }

View File

@ -19,6 +19,16 @@
group 'org.jackhuang' group 'org.jackhuang'
version '3.0' version '3.0'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.tukaani:xz:1.8'
}
}
subprojects { subprojects {
apply plugin: 'java' apply plugin: 'java'
apply plugin: 'idea' apply plugin: 'idea'