diff options
Diffstat (limited to 'src/runner/buildah.rs')
-rw-r--r-- | src/runner/buildah.rs | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/src/runner/buildah.rs b/src/runner/buildah.rs deleted file mode 100644 index 72a2e5f..0000000 --- a/src/runner/buildah.rs +++ /dev/null @@ -1,62 +0,0 @@ -use scopeguard::defer; -use std::{ - io::{Error, ErrorKind}, - process::{Command, Stdio}, -}; - -use super::*; -use crate::types::*; - -static IMAGE: &str = "rebel:latest"; - -pub struct BuildahRunner<'a> { - tasks: &'a TaskMap, -} - -impl<'a> BuildahRunner<'a> { - pub fn new(tasks: &'a TaskMap) -> Self { - BuildahRunner { tasks } - } -} - -fn check_status(output: &std::process::Output, message: &str) -> Result<()> { - if output.status.success() { - Ok(()) - } else { - Err(Error::new(ErrorKind::Other, message)) - } -} - -impl<'a> Runner for BuildahRunner<'a> { - fn run(&self, task: &TaskRef) -> Result<()> { - let task_def = self.tasks.get(task).expect("Invalid TaskRef"); - - let buildah_from = Command::new("buildah") - .arg("from") - .arg("--name") - .arg(task) - .arg(IMAGE) - .output()?; - check_status(&buildah_from, "unable to create container")?; - - defer! { - let _ = Command::new("buildah") - .arg("rm") - .arg(task) - .stdout(Stdio::null()) - .output(); - } - - let buildah_run = Command::new("buildah") - .arg("run") - .arg(task) - .arg("sh") - .arg("-c") - .arg(&task_def.run) - .output()?; - - println!("{}:\n\t{:?}\n\t{:?}", task, task_def, buildah_run); - - Ok(()) - } -} |