adnv 1.5.0

CLI that tracks, checks and auto-updates infrastructure dependency versions across Terraform, Helm, Docker, Git and npm
Documentation
use std::path::PathBuf;

use serde::Deserialize;

use super::{Pipe, Result};
use crate::ops::run::codegen::source::Source;

/// Import a folder from a source (git, archive, etc.)
#[derive(Debug, Deserialize)]
pub struct Action {
    source: Source,
    directory: Option<PathBuf>,
}

impl Action {
    pub async fn execute(&self, pipe: &mut Pipe) -> Result<()> {
        if let Some(directory) = &self.directory {
            super::validate_contained_path(directory, "import directory")?;
        }

        let source = self.source.run().await?;

        match &self.directory {
            Some(path) => {
                let output = pipe.output_temp()?;
                let source = source.join(path);

                crate::util::fs::copy_dir(source, output).await?;
            }
            None => {
                pipe.output(source);
            }
        }

        Ok(())
    }
}