From caa43771f6baffafc231fa90ad528af5c13f33e1 Mon Sep 17 00:00:00 2001 From: ToMe25 <38815969+ToMe25@users.noreply.github.com> Date: Mon, 27 Jun 2022 19:18:40 +0200 Subject: [PATCH] Improve import.lua logging --- .../item/FileImportExportCardItemDevice.java | 5 +++++ src/main/scripts/bin/import.lua | 17 ++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/main/java/li/cil/oc2/common/bus/device/rpc/item/FileImportExportCardItemDevice.java b/src/main/java/li/cil/oc2/common/bus/device/rpc/item/FileImportExportCardItemDevice.java index 4411d0a1..4a33dc9b 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/rpc/item/FileImportExportCardItemDevice.java +++ b/src/main/java/li/cil/oc2/common/bus/device/rpc/item/FileImportExportCardItemDevice.java @@ -224,6 +224,11 @@ public final class FileImportExportCardItemDevice extends AbstractItemRPCDevice @Nullable @Callback(name = BEGIN_IMPORT_FILE) public ImportedFileInfo beginImportFile() { + if (state == State.IMPORT_CANCELED) { + reset(); + throw new IllegalStateException("import was canceled"); + } + if (state != State.IMPORT_REQUESTED) { throw new IllegalStateException("invalid state"); } diff --git a/src/main/scripts/bin/import.lua b/src/main/scripts/bin/import.lua index dd911934..ecf5e745 100644 --- a/src/main/scripts/bin/import.lua +++ b/src/main/scripts/bin/import.lua @@ -11,13 +11,24 @@ end device:reset() if not device:requestImportFile() then - io.write("No users present to request file from.\n") + io.stderr:write("No users present to request file from.\n") + os.exit(1) +end + +local function error_handler(err) + if err:match("import was canceled$") then + io.stderr:write("Import was calceled by the user.\n") + else + io.stderr:write(debug.traceback(err, 2)) + io.stderr:write("\n") + end os.exit(1) end local name, size while true do - local info = device:beginImportFile() + local _, info = xpcall(device.beginImportFile, error_handler, device) + if info then name = arg[1] or info.name or "imported" size = info.size @@ -50,7 +61,7 @@ while file_exists(name) do end end -io.write("Importing ") +io.write("Importing " .. name) io.flush() local file = assert(io.open(name, "wb"))