use crate::error::Result;
use std::path::PathBuf;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ServiceStatus {
Active(String),
Inactive,
NotFound,
Unknown,
}
pub enum ServiceAction {
Install,
Uninstall,
Start,
Stop,
}
pub async fn handle_service(action: ServiceAction, state: Option<PathBuf>) -> Result<()> {
#[cfg(unix)]
return crate::sys::unix::service::handle_service(action, state).await;
#[cfg(windows)]
return crate::sys::windows::service::handle_service(action, state).await;
#[cfg(not(any(unix, windows)))]
{
let _ = (action, state);
Err(crate::error::IroshError::PlatformNotSupported)
}
}
pub async fn view_logs(follow: bool) -> Result<()> {
#[cfg(unix)]
return crate::sys::unix::service::view_logs(follow).await;
#[cfg(windows)]
return crate::sys::windows::service::view_logs(follow).await;
#[cfg(not(any(unix, windows)))]
{
let _ = follow;
Err(crate::error::IroshError::PlatformNotSupported)
}
}
pub async fn query_service_status() -> ServiceStatus {
#[cfg(unix)]
return crate::sys::unix::service::query_service_status().await;
#[cfg(windows)]
return crate::sys::windows::service::query_service_status().await;
#[cfg(not(any(unix, windows)))]
ServiceStatus::Unknown
}