34 lines
1010 B
Swift
34 lines
1010 B
Swift
//
|
|
// main.swift
|
|
// cmdbar_updater
|
|
//
|
|
// Created by Igor Kolokolnikov on 5/23/24.
|
|
//
|
|
|
|
import AppKit
|
|
|
|
fileprivate func existsAtPath(_ path: String, isDirectory: Bool = false) -> Bool {
|
|
var isDirectory: ObjCBool = ObjCBool(isDirectory)
|
|
let exists = FileManager.default.fileExists(atPath: path, isDirectory: &isDirectory)
|
|
return exists
|
|
}
|
|
|
|
let tmp = FileManager.default.temporaryDirectory.appending(path: "CmdBar.app")
|
|
let app = Bundle.main.bundleURL
|
|
|
|
if !existsAtPath(tmp.path(), isDirectory: true) { exit(1) }
|
|
|
|
do {
|
|
let _ = try FileManager.default.replaceItemAt(app, withItemAt: tmp)
|
|
} catch {
|
|
if existsAtPath(tmp.path(), isDirectory: true) {
|
|
do { try FileManager.default.removeItem(at: tmp) } catch {}
|
|
}
|
|
exit(1)
|
|
}
|
|
|
|
let configuration = NSWorkspace.OpenConfiguration()
|
|
NSWorkspace.shared.openApplication(at: app, configuration: configuration, completionHandler: nil)
|
|
|
|
usleep(100000*2) // Allow 2 seconds to let `NSWorkspace.shared.openApplication` finish launching our app.
|