diff options
author | Toby Vincent <tobyv@tobyvin.dev> | 2024-10-09 18:23:58 -0500 |
---|---|---|
committer | Toby Vincent <tobyv@tobyvin.dev> | 2024-10-09 18:23:58 -0500 |
commit | b94f8e694bf01f5dba9ce2c01f589463a3dfbc69 (patch) | |
tree | c787530e63fb510db31533166edf1b9ff54be62a /src/service/systemd.rs | |
parent | 117d33fc478bf529094850b1fe40c558f04c9865 (diff) |
feat!: rewrite to use traits and streams
Diffstat (limited to 'src/service/systemd.rs')
-rw-r--r-- | src/service/systemd.rs | 36 |
1 files changed, 0 insertions, 36 deletions
diff --git a/src/service/systemd.rs b/src/service/systemd.rs deleted file mode 100644 index ee220b8..0000000 --- a/src/service/systemd.rs +++ /dev/null @@ -1,36 +0,0 @@ -use std::{process::Command, time::Duration}; - -use serde::Deserialize; -use tokio::sync::watch::Sender; - -use crate::{Error, Status}; - -use super::ServiceSpawner; - -#[derive(Debug, Clone, Deserialize)] -pub struct Systemd { - pub service: String, -} - -impl ServiceSpawner for Systemd { - async fn spawn(self, tx: Sender<Status>) -> Result<(), Error> { - let mut command = Command::new("systemctl"); - command.arg("is-active").arg(&self.service); - - let mut interval = tokio::time::interval(Duration::from_secs(5)); - loop { - interval.tick().await; - - let status = command.output().map_or_else(Into::into, |o| { - if o.status.success() { - Status::Ok - } else { - let stdout = String::from_utf8_lossy(&o.stdout).trim().to_string(); - Status::Error(Some(format!("Service state: {}", stdout))) - } - }); - - tx.send_if_modified(|s| s.update(status)); - } - } -} |