Skip to content

Commit

Permalink
LaunchDaemons/org.pqrs.Karabiner-VirtualHIDDevice-Daemon.plist -> Lau…
Browse files Browse the repository at this point in the history
…nchDaemons/org.pqrs.service.daemon.Karabiner-VirtualHIDDevice-Daemon.plist
  • Loading branch information
tekezo committed May 20, 2024
1 parent 37869b2 commit dfbaf94
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 28 deletions.
83 changes: 55 additions & 28 deletions examples/SMAppServiceExample/src/main.swift
Original file line number Diff line number Diff line change
@@ -1,41 +1,58 @@
import Foundation
import ServiceManagement

let daemonPlistNames = [
"org.pqrs.Karabiner-VirtualHIDDevice-Daemon.plist"
]
enum Subcommand: String {
case register = "register"
case unregister = "unregister"
case status = "status"
}

func registerService(_ service: SMAppService) {
do {
try service.register()
print("Successfully registered \(service)")
} catch {
// Note:
// When calling `SMAppService.daemon.register`, if user approval has not been granted, an `Operation not permitted` error will be returned.
// To call `register` for all agents and daemons, the loop continues even if an error occurs.
// Therefore, only log output will be performed here.
print("Unable to register \(error)")
}
}

func unregisterService(_ service: SMAppService) {
do {
try service.unregister()
print("Successfully unregistered \(service)")
} catch {
print("Unable to unregister \(error)")
}
}

RunLoop.main.perform {
for argument in CommandLine.arguments {
if argument == "register" {
for daemonPlistName in daemonPlistNames {
let s = SMAppService.daemon(plistName: daemonPlistName)
do {
try s.register()
print("Successfully registered \(s)")
} catch {
print("Unable to register \(error)")
exit(1)
}
let services: [SMAppService] = [
SMAppService.daemon(
plistName: "org.pqrs.service.daemon.Karabiner-VirtualHIDDevice-Daemon.plist")
]

if CommandLine.arguments.count > 1 {
let subcommand = CommandLine.arguments[1]

switch Subcommand(rawValue: subcommand) {
case .register:
for s in services {
registerService(s)
}
exit(0)

} else if argument == "unregister" {
for daemonPlistName in daemonPlistNames {
let s = SMAppService.daemon(plistName: daemonPlistName)
do {
try s.unregister()
print("Successfully unregistered \(s)")
} catch {
print("Unable to unregister \(error)")
exit(1)
}
case .unregister:
for s in services {
unregisterService(s)
}
exit(0)

} else if argument == "status" {
for daemonPlistName in daemonPlistNames {
let s = SMAppService.daemon(plistName: daemonPlistName)
case .status:
for s in services {
switch s.status {
case .notRegistered:
print("\(s) notRegistered")
Expand All @@ -51,11 +68,21 @@ RunLoop.main.perform {
}

exit(0)

default:
print("Unknown subcommand \(subcommand)")
exit(1)
}
}

print("Usage:")
print(" SMAppServiceExample register|unregister|status")
print(" SMAppServiceExample subcommand")
print("")
print("Subcommands:")
print(" \(Subcommand.register.rawValue)")
print(" \(Subcommand.unregister.rawValue)")
print(" \(Subcommand.status.rawValue)")

exit(0)
}

Expand Down

0 comments on commit dfbaf94

Please sign in to comment.