diff --git a/CHANGELOG.md b/CHANGELOG.md index d3b4471..2ad4b17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Save msg upon error [#59] +- Answered flag not set [#50] +- Panic when downloads-dir does not exist [#100] ### Changed @@ -154,6 +156,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [#39]: https://github.com/soywod/himalaya/issues/39 [#40]: https://github.com/soywod/himalaya/issues/40 [#41]: https://github.com/soywod/himalaya/issues/41 +[#50]: https://github.com/soywod/himalaya/issues/50 [#58]: https://github.com/soywod/himalaya/issues/58 [#59]: https://github.com/soywod/himalaya/issues/59 [#61]: https://github.com/soywod/himalaya/issues/61 @@ -164,3 +167,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [#83]: https://github.com/soywod/himalaya/issues/83 [#87]: https://github.com/soywod/himalaya/issues/87 [#89]: https://github.com/soywod/himalaya/issues/89 +[#100]: https://github.com/soywod/himalaya/issues/100 diff --git a/src/config/model.rs b/src/config/model.rs index 6f71552..1ce46ae 100644 --- a/src/config/model.rs +++ b/src/config/model.rs @@ -160,15 +160,12 @@ impl Config { } pub fn downloads_filepath(&self, account: &Account, filename: &str) -> PathBuf { - let temp_dir = env::temp_dir(); - let mut full_path = account + account .downloads_dir .as_ref() - .unwrap_or(self.downloads_dir.as_ref().unwrap_or(&temp_dir)) - .to_owned(); - - full_path.push(filename); - full_path + .unwrap_or(self.downloads_dir.as_ref().unwrap_or(&env::temp_dir())) + .to_owned() + .join(filename) } pub fn address(&self, account: &Account) -> String { diff --git a/src/msg/cli.rs b/src/msg/cli.rs index 5476a11..63ded1b 100644 --- a/src/msg/cli.rs +++ b/src/msg/cli.rs @@ -258,24 +258,25 @@ pub fn msg_matches(matches: &ArgMatches) -> Result<()> { } if let Some(matches) = matches.subcommand_matches("attachments") { - debug!("Subcommand matched: attachments"); + debug!("[msg::cli] subcommand matched: attachments"); let mut imap_conn = ImapConnector::new(&account)?; let uid = matches.value_of("uid").unwrap(); - debug!("UID: {}", &uid); + debug!("[msg::cli] uid: {}", &uid); let msg = imap_conn.read_msg(&mbox, &uid)?; let attachments = Attachments::from_bytes(&msg)?; debug!( - "{} attachment(s) found for message {}", + "[msg::cli] {} attachment(s) found for message {}", &attachments.0.len(), &uid ); - attachments.0.iter().for_each(|attachment| { + for attachment in attachments.0.iter() { let filepath = config.downloads_filepath(&account, &attachment.filename); - debug!("Downloading {}…", &attachment.filename); - fs::write(filepath, &attachment.raw).unwrap() - }); + debug!("[msg::cli] downloading {}…", &attachment.filename); + fs::write(&filepath, &attachment.raw) + .chain_err(|| format!("Could not save attachment {:?}", filepath))?; + } info!(&format!( "{} attachment(s) successfully downloaded", &attachments.0.len()