import AppKit import Darwin @main @MainActor enum TerebiBootstrap { static func main() { let app = Bundle.main.bundleURL if let error = FFmpegRuntime.error(for: app) { fail(error) } let payload = app.appendingPathComponent("Contents/MacOS/terebi-player") let errorCode = payload.path.withCString { path in _ = execv(path, CommandLine.unsafeArgv) return errno } let detail = String(cString: strerror(errorCode)) fail("Could not start the player: \(detail)\n\nPlayer executable: \(payload.path)\nRebuild and reinstall terebi.") } private static func fail(_ message: String) -> Never { FileHandle.standardError.write(Data("terebi: \(message)\n".utf8)) let application = NSApplication.shared application.setActivationPolicy(.regular) application.activate(ignoringOtherApps: true) let alert = NSAlert() alert.alertStyle = .critical alert.messageText = "terebi could not start" alert.informativeText = message alert.addButton(withTitle: "Quit") alert.runModal() exit(69) } }