diff --git a/src/apps.rs b/src/apps.rs index 27f3838..2a3e60b 100644 --- a/src/apps.rs +++ b/src/apps.rs @@ -49,13 +49,13 @@ impl Apps { (procs, holds) } - pub fn run(&self, procs: Vec, holds: Option) -> Result<()> { + pub fn run(&self, procs: Vec, holds: Option) -> Result> { let mut procs = procs; let mut holds = holds; if holds.unwrap_or(0) < 1 { error!("no holds configured"); - return Ok(()); + return Ok(Vec::new()); } while holds > Some(0) { @@ -99,12 +99,6 @@ impl Apps { procs = newprocs; } - info!("shutting down"); - for mut proc in procs { - info!("stopping {}", &proc.app.name); - let _ = proc.child.kill(); - } - - Ok(()) + Ok(procs) } } diff --git a/src/main.rs b/src/main.rs index b1cbc82..ed79520 100644 --- a/src/main.rs +++ b/src/main.rs @@ -31,6 +31,12 @@ fn main() { fn startup() -> Result<()> { let apps = Apps::load("sup.toml")?; let (procs, holds) = apps.start(); - apps.run(procs, holds)?; + let procs = apps.run(procs, holds)?; + + info!("shutting down"); + for mut proc in procs { + proc.stop(); + } + Ok(()) } diff --git a/src/proc.rs b/src/proc.rs index 619a099..7173bcc 100644 --- a/src/proc.rs +++ b/src/proc.rs @@ -23,6 +23,11 @@ impl Proc { Ok(Proc { app, child }) } + pub fn stop(&mut self) { + info!("stopping {}", &self.app.name); + let _ = self.child.kill(); + } + pub fn check_stdout(&mut self) -> Option { let child_stdout = self.child.stdout.as_mut(); if let Some(stdout) = child_stdout {