adnv 1.5.0

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

use crate::Result;
use crate::util::serde::SingletonMap;

mod actions;
mod source;

#[serde_with::serde_as]
#[derive(Debug, Deserialize)]
pub struct Step {
    name: String,
    #[serde_as(as = "Vec<SingletonMap>")]
    #[serde(default)]
    actions: Vec<actions::Action>,
}

impl Step {
    pub async fn execute(&self) -> Result<()> {
        use actions::Pipe;

        tracing::info!("Running step: {}", self.name);

        let mut pipe = Pipe::new();
        for action in &self.actions {
            action.execute(&mut pipe).await?;

            // Update pipe for next action
            pipe = pipe.pipe();
        }

        Ok(())
    }
}