use crate::cmd::SyncCommandErrorContext;
fn service(action: &str) -> anyhow::Result<()> {
let (program, args) = if cfg!(target_os = "macos") {
("brew", vec!["services", action, "orch"])
} else {
let action = if action == "info" { "status" } else { action };
("systemctl", vec!["--user", action, "orch"])
};
let status = std::process::Command::new(program)
.args(&args)
.status_with_context()?;
if !status.success() {
anyhow::bail!("{program} {} failed", args.join(" "));
}
Ok(())
}
pub fn start() -> anyhow::Result<()> {
service("start")
}
pub fn stop() -> anyhow::Result<()> {
service("stop")
}
pub fn restart() -> anyhow::Result<()> {
service("restart")
}
pub fn status() -> anyhow::Result<()> {
service("info")
}