diff --git a/crates/cuddle-ci/src/rust_service/assets.rs b/crates/cuddle-ci/src/rust_service/assets.rs index 58245c2..a7ed13b 100644 --- a/crates/cuddle-ci/src/rust_service/assets.rs +++ b/crates/cuddle-ci/src/rust_service/assets.rs @@ -9,7 +9,7 @@ use super::RustService; pub struct Assets { client: dagger_sdk::Query, - assets: Vec, + assets: Vec<(PathBuf, PathBuf)>, } impl Assets { @@ -20,8 +20,8 @@ impl Assets { } } - fn with_folders(mut self, folders: impl IntoIterator>) -> Self { - let mut folders = folders.into_iter().map(|f| f.into()).collect::>(); + fn with_folders(mut self, folders: impl IntoIterator) -> Self { + let mut folders = folders.into_iter().collect::>(); self.assets.append(&mut folders); self @@ -31,24 +31,28 @@ impl Assets { #[async_trait] impl DaggerMiddleware for Assets { async fn handle(&self, container: Container) -> eyre::Result { - let container = self.assets.iter().fold(container, |container, asset_path| { - let rel_path = asset_path.display().to_string(); - let path = self.client.host().directory(&rel_path); - container.with_directory(&rel_path, path) - }); + let container = + self.assets + .iter() + .fold(container, |container, (src_asset_path, dest_asset_path)| { + let src_path = src_asset_path.display().to_string(); + let dest_path = dest_asset_path.display().to_string(); + let path = self.client.host().directory(&src_path); + container.with_directory(&dest_path, path) + }); Ok(container) } } pub trait AssetsExt { - fn with_assets(&mut self, folders: impl IntoIterator>) -> &mut Self { + fn with_assets(&mut self, folders: impl IntoIterator) -> &mut Self { self } } impl AssetsExt for RustService { - fn with_assets(&mut self, folders: impl IntoIterator>) -> &mut Self { + fn with_assets(&mut self, folders: impl IntoIterator) -> &mut Self { self.with_stage(super::RustServiceStage::AfterPackage(Arc::new( Assets::new(self.client.clone()).with_folders(folders), )))