diff --git a/src/compose.rs b/src/compose.rs index 6c2cb02..875155e 100644 --- a/src/compose.rs +++ b/src/compose.rs @@ -1,7 +1,7 @@ use std::collections::HashSet; use std::fmt; use std::path::{Path, PathBuf}; -use std::process::Command; +use std::process::{Command, Stdio}; pub struct ComposeProject { compose_file: PathBuf, @@ -39,6 +39,32 @@ impl ComposeProject { let stdout = String::from_utf8(output.stdout).expect("Failed to parse output"); stdout.trim().split('\n').map(String::from).collect() } + + pub fn down(&self) -> bool { + match Command::new("docker-compose") + .stdout(Stdio::null()) + .current_dir(self.working_directory()) + .args(&["-f", &self.compose_file.to_string_lossy()]) + .arg("down") + .status() + { + Ok(s) => s.success(), + Err(_) => false, + } + } + + pub fn up(&self) -> bool { + match Command::new("docker-compose") + .stdout(Stdio::null()) + .current_dir(self.working_directory()) + .args(&["-f", &self.compose_file.to_string_lossy()]) + .args(&["up", "-d"]) + .status() + { + Ok(s) => s.success(), + Err(_) => false, + } + } } impl fmt::Display for ComposeProject { diff --git a/src/main.rs b/src/main.rs index 5038bb7..fab67cd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -46,6 +46,12 @@ fn do_update(compose_project: compose::ComposeProject) { if post_images == pre_images { info!("No change to images"); + } else { + info!("Changes detected - Cycling container"); + warn!("Stopping container"); + compose_project.down(); + warn!("Starting container"); + compose_project.up(); } }