refactor asset path resolution

This commit is contained in:
softprops 2019-08-25 12:37:35 -04:00
parent 462a032917
commit 445ef7dd5c

View file

@ -3,7 +3,11 @@ mod github;
use github::{AssetUploader, Release, Releaser}; use github::{AssetUploader, Release, Releaser};
use reqwest::Client; use reqwest::Client;
use serde::Deserialize; use serde::Deserialize;
use std::{error::Error, fs::File, path::Path}; use std::{
error::Error,
fs::File,
path::{Path, PathBuf},
};
#[derive(Deserialize, Default)] #[derive(Deserialize, Default)]
struct Config { struct Config {
@ -60,19 +64,25 @@ fn run(
)?; )?;
if let Some(patterns) = conf.input_files { if let Some(patterns) = conf.input_files {
for pattern in patterns { let paths: Result<Vec<PathBuf>, Box<dyn Error>> =
for path in glob::glob(pattern.as_str())? { patterns
let resolved = path?; .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( uploader.upload(
conf.github_token.as_str(), conf.github_token.as_str(),
conf.github_repository.as_str(), conf.github_repository.as_str(),
release_id, release_id,
mime_or_default(&resolved), mime_or_default(&path),
File::open(resolved)?, File::open(path)?,
)?; )?;
} }
} }
}
Ok(()) Ok(())
} }