Skip to content

Instantly share code, notes, and snippets.

View dilames's full-sized avatar

Andrew Chersky dilames

View GitHub Profile
class ViewController: NSViewController {
@IBOutlet private weak var textField: NSTextField!
@IBOutlet private weak var textView: NSTextView!
private var bashService = BashService()
@IBAction func execute(_ sender: Any) {
bashService.execute(textField.stringValue) { response in
DispatchQueue.main.async {
import Foundation
import SecurityFoundation
import ServiceManagement
final class BashService {
// MARK: Private
private var connection: NSXPCConnection?
private var authorization: SFAuthorization?
import Foundation
final class Service: NSObject {
// MARK: Private
private let listener: NSXPCListener
private var connections = [NSXPCConnection]()
override init() {
listener = NSXPCListener(machServiceName: Keys.machServiceName)
import Cocoa
class ViewController: NSViewController {
@IBOutlet private weak var textField: NSTextField!
@IBOutlet private weak var textView: NSTextView!
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.chersky.service</string>
<key>MachServices</key>
<dict>
<key>com.chersky.service</key>
<true/>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIdentifier</key>
<string>com.chersky.service</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>com.chersky.service</string>
import Foundation
final class Bash {
// MARK: Private
private var operations: [Process]
///
/// - Parameters:
/// - domain: Root folder for storing output files (Pipe is limited my itself capacity so you may send output data to an file)
@dilames
dilames / ServiceProtocol+Keys.swift
Last active January 9, 2020 02:21
Protocol for XPC Service
import Foundation
public struct Keys {
static let machServiceName = "com.chersky.service"
}
@objc
protocol ServiceProtocol {
func bash(_ args: [String], completion: @escaping (String) -> Void)
}
import ServiceManagement
import SecurityFoundation
final class ServiceManagment {
enum Error: LocalizedError {
case canceledByUser
}
private init() {}
import ServiceManagement
import SecurityFoundation
extension SFAuthorization {
enum Error: LocalizedError {
case allocationError
}
class func withAdminPrivileges(prompt: String? = nil) throws -> SFAuthorization {