use std::sync::Arc; use async_trait::async_trait; use dagger_sdk::Container; use crate::dagger_middleware::DaggerMiddleware; use super::RustService; pub struct CargoClean; impl Default for CargoClean { fn default() -> Self { Self::new() } } impl CargoClean { pub fn new() -> Self { Self {} } } #[async_trait] impl DaggerMiddleware for CargoClean { async fn handle(&self, container: Container) -> eyre::Result { Ok(container.with_exec(vec!["cargo", "clean"])) } } pub trait CargoCleanExt { fn with_cargo_clean(&mut self) -> &mut Self { self } } impl CargoCleanExt for RustService { fn with_cargo_clean(&mut self) -> &mut Self { self.with_stage(super::RustServiceStage::BeforeBuild(Arc::new( CargoClean::new(), ))); self } }