From d1647764c4804659808bda850b2a8c1a45e62dd8 Mon Sep 17 00:00:00 2001 From: comp500 Date: Mon, 24 Jun 2019 17:47:17 +0100 Subject: [PATCH] Implement preserve and alias in index --- .../link/infra/packwiz/installer/UpdateManager.java | 12 +++++++++--- .../infra/packwiz/installer/metadata/IndexFile.java | 7 ++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/link/infra/packwiz/installer/UpdateManager.java b/src/main/java/link/infra/packwiz/installer/UpdateManager.java index 5ca183f..ac3a6a4 100644 --- a/src/main/java/link/infra/packwiz/installer/UpdateManager.java +++ b/src/main/java/link/infra/packwiz/installer/UpdateManager.java @@ -157,10 +157,9 @@ public class UpdateManager { ui.handleExceptionAndExit(e1); } - // When successfully updated + // TODO: update MMC params, java args etc + manifest.packFileHash = packFileSource.getHash(); - // update other hashes - // TODO: don't do this on failure? try (Writer writer = new FileWriter(Paths.get(opts.packFolder, opts.manifestFile).toString())) { gson.toJson(manifest, writer); } catch (IOException e) { @@ -271,6 +270,13 @@ public class UpdateManager { } catch (Exception e) {} } + // Don't update files marked with preserve if they already exist on disk + if (f.preserve) { + if (Files.exists(Paths.get(opts.packFolder, f.getDestURI().toString()))) { + return dc; + } + } + try { Hash hash; String fileHashFormat; diff --git a/src/main/java/link/infra/packwiz/installer/metadata/IndexFile.java b/src/main/java/link/infra/packwiz/installer/metadata/IndexFile.java index e4da16f..26d4985 100644 --- a/src/main/java/link/infra/packwiz/installer/metadata/IndexFile.java +++ b/src/main/java/link/infra/packwiz/installer/metadata/IndexFile.java @@ -26,10 +26,8 @@ public class IndexFile { @SerializedName("hash-format") public String hashFormat; public String hash; - // TODO: implement - public String alias; + public URI alias; public boolean metafile; - // TODO: implement public boolean preserve; public transient ModFile linkedFile; @@ -96,6 +94,9 @@ public class IndexFile { } public URI getDestURI() { + if (alias != null) { + return alias; + } if (metafile && linkedFile != null) { // TODO: URIs are bad return file.resolve(linkedFile.filename.replace(" ", "%20"));