From d4d3852745f35426898151fbd95f309ed6c8026c Mon Sep 17 00:00:00 2001 From: Nikolay Edigaryev Date: Tue, 12 Sep 2023 13:56:49 +0400 Subject: [PATCH] Return exit code 2 on RuntimeError.VMDoesNotExist (#597) * Return exit code 2 on RuntimeError.VMDoesNotExist * Upgrade isFileNotFound() do detect underlying errors --- Sources/tart/VMStorageHelper.swift | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Sources/tart/VMStorageHelper.swift b/Sources/tart/VMStorageHelper.swift index 87300b7..9be9e84 100644 --- a/Sources/tart/VMStorageHelper.swift +++ b/Sources/tart/VMStorageHelper.swift @@ -34,9 +34,15 @@ class VMStorageHelper { } } +extension NSError { + func isFileNotFound() -> Bool { + return self.code == NSFileNoSuchFileError || self.code == NSFileReadNoSuchFileError + } +} + extension Error { func isFileNotFound() -> Bool { - (self as NSError).code == NSFileReadNoSuchFileError + (self as NSError).isFileNotFound() || (self as NSError).underlyingErrors.contains(where: { $0.isFileNotFound() }) } } @@ -111,6 +117,8 @@ extension RuntimeError : CustomStringConvertible { extension RuntimeError : HasExitCode { var exitCode: Int32 { switch self { + case .VMDoesNotExist: + return 2 case .VMNotRunning: return 2 case .VMAlreadyRunning: