diff --git a/MTMR/AppleScriptTouchBarItem.swift b/MTMR/AppleScriptTouchBarItem.swift index faeefa3..e606269 100644 --- a/MTMR/AppleScriptTouchBarItem.swift +++ b/MTMR/AppleScriptTouchBarItem.swift @@ -63,13 +63,6 @@ class AppleScriptTouchBarItem: CustomButtonTouchBarItem { } -extension SourceProtocol { - var appleScript: NSAppleScript? { - guard let source = self.string else { return nil } - return NSAppleScript(source: source) - } -} - extension DispatchQueue { static let appleScriptQueue = DispatchQueue(label: "mtmr.applescript") } diff --git a/MTMR/ItemsParsing.swift b/MTMR/ItemsParsing.swift index 4150c4a..e23f093 100644 --- a/MTMR/ItemsParsing.swift +++ b/MTMR/ItemsParsing.swift @@ -413,6 +413,7 @@ protocol SourceProtocol { var data: Data? { get } var string: String? { get } var image: NSImage? { get } + var appleScript: NSAppleScript? { get } } struct Source: Decodable, SourceProtocol { let filePath: String? @@ -434,6 +435,9 @@ struct Source: Decodable, SourceProtocol { var image: NSImage? { return data?.image } + var appleScript: NSAppleScript? { + return filePath?.fileURL.appleScript ?? self.string?.appleScript + } private init(filePath: String?, base64: String?, inline: String?) { self.filePath = filePath @@ -454,6 +458,9 @@ extension NSImage: SourceProtocol { var image: NSImage? { return self } + var appleScript: NSAppleScript? { + return nil + } } extension String { @@ -484,3 +491,19 @@ enum Align: String, Decodable { case center case right } + +extension String { + var fileURL: URL { + return URL(fileURLWithPath: self) + } + var appleScript: NSAppleScript? { + return NSAppleScript(source: self) + } +} + +extension URL { + var appleScript: NSAppleScript? { + guard FileManager.default.fileExists(atPath: self.path) else { return nil } + return NSAppleScript(contentsOf: self, error: nil) + } +}