LaunchAgent
LaunchAgent copied to clipboard
[Feature Request] Support fine-grained `KeepAlive` control?
Thanks a lot for making this wonderful library!
LaunchAgent.keepAlive
in its current form can only accept a Bool
, but I have encountered the following case where a simple true
is not enough since I have to distinguish between zero and non-zero exit codes (a very well-written rationale can be found at https://github.com/tjluoma/launchd-keepalive#launchd-keepalive).
In short, this KeepAlive
field has to look like this if I want to follow the best practice:
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
<key>Crashed</key>
<true/>
</dict>
Is it possible to use an enum
or something for the type of this field? I'm not that familiar with Swift, but if it is a minor change, maybe I can do something about it... 🙏
Those are the keys supported by KeepAlive
as per https://keith.github.io/xcode-man-pages/launchd.plist.5.html#KeepAlive:
-
SuccessfulExit <boolean>
- ~~
NetworkState <boolean>
~~ (deprecated) -
PathState <dictionary of booleans>
-
OtherJobEnabled <dictionary of booleans>
-
Crashed <boolean>
... and I guess the most popular keys are the boolean
ones.
It should be possible to support the extended KeepAlive
options. It looks like there are a bunch of nested options that will need to be modeled so they're both Swift-y and encode into a valid plist. If you'd like to take a swing at it feel free, I'll also see what I can come up with as I have time.