diff --git a/src/service.rs b/src/service.rs
index 4249120e..679e6fe2 100644
--- a/src/service.rs
+++ b/src/service.rs
@@ -65,7 +65,20 @@ fn install_macos() -> Result<()> {
let stdout = logs_dir.join("daemon.stdout.log");
let stderr = logs_dir.join("daemon.stderr.log");
- let plist = format!(
+ let plist = macos_plist_content(
+ &exe.display().to_string(),
+ &stdout.display().to_string(),
+ &stderr.display().to_string(),
+ );
+
+ std::fs::write(&file, plist)?;
+ println!("Installed launchd service: {}", file.display());
+ println!(" Start with: ironclaw service start");
+ Ok(())
+}
+
+fn macos_plist_content(exe: &str, stdout: &str, stderr: &str) -> String {
+ format!(
r#"
@@ -81,6 +94,11 @@ fn install_macos() -> Result<()> {
KeepAlive
+ EnvironmentVariables
+
+ CLI_ENABLED
+ false
+
StandardOutPath
{stdout}
StandardErrorPath
@@ -89,15 +107,10 @@ fn install_macos() -> Result<()> {
"#,
label = SERVICE_LABEL,
- exe = xml_escape(&exe.display().to_string()),
- stdout = xml_escape(&stdout.display().to_string()),
- stderr = xml_escape(&stderr.display().to_string()),
- );
-
- std::fs::write(&file, plist)?;
- println!("Installed launchd service: {}", file.display());
- println!(" Start with: ironclaw service start");
- Ok(())
+ exe = xml_escape(exe),
+ stdout = xml_escape(stdout),
+ stderr = xml_escape(stderr),
+ )
}
fn install_linux() -> Result<()> {
@@ -356,4 +369,11 @@ mod tests {
let s = path.to_string_lossy();
assert!(s.ends_with(".ironclaw/logs"), "unexpected path: {s}");
}
+
+ #[test]
+ fn macos_plist_sets_cli_enabled_false() {
+ let plist = macos_plist_content("/tmp/ironclaw", "/tmp/stdout.log", "/tmp/stderr.log");
+ assert!(plist.contains("EnvironmentVariables"));
+ assert!(plist.contains(" CLI_ENABLED\n false"));
+ }
}