use assert_cmd::{assert::OutputAssertExt, cargo::CommandCargoExt};
use color_eyre::{eyre::eyre, Result};
use sn_service_management::StatusSummary;
use std::process::Command;
pub async fn get_service_status() -> Result<StatusSummary> {
let mut cmd = Command::cargo_bin("safenode-manager")?;
let output = cmd
.arg("status")
.arg("--json")
.assert()
.success()
.get_output()
.stdout
.clone();
let output = std::str::from_utf8(&output)?;
println!("status command output:");
println!("{output}");
let status: StatusSummary = match serde_json::from_str(output) {
Ok(json) => json,
Err(e) => return Err(eyre!("Failed to parse JSON output: {:?}", e)),
};
Ok(status)
}