fluentci_ext/
git_checkout.rs1use std::{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 GitCheckout {}
9
10impl Extension for GitCheckout {
11 fn exec(
12 &mut self,
13 branch: &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 cmd = format!("git checkout {}", branch);
22 exec(&cmd, tx, out, last_cmd, work_dir)
23 }
24
25 fn setup(&self) -> Result<(), Error> {
26 Pkgx::default().install(vec!["git"])?;
27 Ok(())
28 }
29}