use std::error::Error;
use std::path::PathBuf;

pub mod codegen;
pub mod systemd;
pub mod detect;
pub mod entry;
pub mod windows;
pub mod macos;
pub mod runit;

pub trait ServiceManager {
    fn install(&self, bin_path: PathBuf, name: &str, server_url: &str) -> Result<(), Box<dyn Error>>;
    fn uninstall(&self, name: &str) -> Result<(), Box<dyn Error>>;
    fn start(&self, name: &str) -> Result<(), Box<dyn Error>>;
    fn stop(&self, name: &str) -> Result<(), Box<dyn Error>>;
}