fix(service): unescape plist XML, surface both launchctl streams, clear status fields when not installed
Three review findings on task 4: - read_plist_fields now parses the plist properly via the plist crate (already a transitive dep of service-manager, promoted to direct) instead of slicing raw XML, so a PATH or program path containing & or < no longer round-trips as literal &/< through cli::service::render_status. - launchctl's error path now includes both stdout and stderr, trimmed and joined only on non-empty parts, so a failure never surfaces as "launchctl load failed: " with nothing after the colon. - status() now returns identical None fields (program, path_env, snapshotted, pid) whether the plist is absent or the plist exists but the crate reports NotInstalled (e.g. written but never loaded, or booted out of band) - extracted via a shared not_installed_status/build_status split so both paths run the same code. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EGntTHCW3sEPy1VBRopNNp
This commit is contained in:
Generated
+1
@@ -1348,6 +1348,7 @@ dependencies = [
|
||||
"etcetera",
|
||||
"humantime",
|
||||
"nix",
|
||||
"plist",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"service-manager",
|
||||
|
||||
Reference in New Issue
Block a user