fluentci_ext/archive/
unzip.rs

1use std::{env, process::ExitStatus, sync::mpsc::Sender};
2
3use crate::{exec, pkgx::Pkgx, Extension};
4use anyhow::Error;
5use fluentci_types::Output;
6
7#[derive(Default)]
8pub struct Unzip {}
9
10impl Extension for Unzip {
11    fn exec(
12        &mut self,
13        path: &str,
14        tx: Sender<String>,
15        out: Output,
16        last_cmd: bool,
17        work_dir: &str,
18    ) -> Result<ExitStatus, Error> {
19        self.setup()?;
20
21        let output_directory =
22            env::var("FLUENTCI_UNZIP_OUTPUT_DIRECTORY").unwrap_or(".".to_string());
23
24        let cmd = format!("unzip -o {} -d {}", path, output_directory);
25        exec(&cmd, tx, out, last_cmd, work_dir)
26    }
27
28    fn setup(&self) -> Result<(), Error> {
29        Pkgx::default().install(vec!["unzip"])?;
30        Ok(())
31    }
32}