From 445ef7dd5c782f7738c992e69c91c170329ab420 Mon Sep 17 00:00:00 2001 From: softprops Date: Sun, 25 Aug 2019 12:37:35 -0400 Subject: [PATCH] refactor asset path resolution --- src/main.rs | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6b5fe71..0c2c835 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,7 +3,11 @@ mod github; use github::{AssetUploader, Release, Releaser}; use reqwest::Client; use serde::Deserialize; -use std::{error::Error, fs::File, path::Path}; +use std::{ + error::Error, + fs::File, + path::{Path, PathBuf}, +}; #[derive(Deserialize, Default)] struct Config { @@ -60,17 +64,23 @@ fn run( )?; if let Some(patterns) = conf.input_files { - for pattern in patterns { - for path in glob::glob(pattern.as_str())? { - let resolved = path?; - uploader.upload( - conf.github_token.as_str(), - conf.github_repository.as_str(), - release_id, - mime_or_default(&resolved), - File::open(resolved)?, - )?; - } + let paths: Result, Box> = + patterns + .into_iter() + .try_fold(Vec::new(), |mut paths, pattern| { + let matched = glob::glob(pattern.as_str())?.filter_map(Result::ok); + paths.extend(matched); + Ok(paths) + }); + for path in paths? { + log::info!("Uploading path {}", path.display()); + uploader.upload( + conf.github_token.as_str(), + conf.github_repository.as_str(), + release_id, + mime_or_default(&path), + File::open(path)?, + )?; } }