add service manager sal
This commit is contained in:
54
service_manager/README.md
Normal file
54
service_manager/README.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# Service Manager
|
||||
|
||||
This crate provides a unified interface for managing system services across different platforms.
|
||||
It abstracts the underlying service management system (like `launchctl` on macOS or `systemd` on Linux),
|
||||
allowing you to start, stop, and monitor services with a consistent API.
|
||||
|
||||
## Features
|
||||
|
||||
- A `ServiceManager` trait defining a common interface for service operations.
|
||||
- Platform-specific implementations for:
|
||||
- macOS (`launchctl`)
|
||||
- Linux (`systemd`)
|
||||
- A factory function `create_service_manager` that returns the appropriate manager for the current platform.
|
||||
|
||||
## Usage
|
||||
|
||||
Add this to your `Cargo.toml`:
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
service_manager = { path = "../service_manager" }
|
||||
```
|
||||
|
||||
Here is an example of how to use the `ServiceManager`:
|
||||
|
||||
```rust,no_run
|
||||
use service_manager::{create_service_manager, ServiceConfig};
|
||||
use std::collections::HashMap;
|
||||
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let service_manager = create_service_manager();
|
||||
|
||||
let config = ServiceConfig {
|
||||
name: "my-service".to_string(),
|
||||
binary_path: "/usr/local/bin/my-service-executable".to_string(),
|
||||
args: vec!["--config".to_string(), "/etc/my-service.conf".to_string()],
|
||||
working_directory: Some("/var/tmp".to_string()),
|
||||
environment: HashMap::new(),
|
||||
auto_restart: true,
|
||||
};
|
||||
|
||||
// Start a new service
|
||||
service_manager.start(&config)?;
|
||||
|
||||
// Get the status of the service
|
||||
let status = service_manager.status("my-service")?;
|
||||
println!("Service status: {:?}", status);
|
||||
|
||||
// Stop the service
|
||||
service_manager.stop("my-service")?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
```
|
Reference in New Issue
Block a user