[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.