X-Git-Url: https://code.octet-stream.net/hashgood/blobdiff_plain/1dec1ec82f55d639d9fad0d0933545aa509c4272..18630e80189942b821fbe5502572acc21bb0543e:/src/verify.rs diff --git a/src/verify.rs b/src/verify.rs index 6ad9ea9..e519f8a 100644 --- a/src/verify.rs +++ b/src/verify.rs @@ -2,8 +2,8 @@ use super::{ Algorithm, CandidateHash, CandidateHashes, Hash, MatchLevel, MessageLevel, Opt, Verification, VerificationSource, }; -use clipboard::ClipboardContext; -use clipboard::ClipboardProvider; +#[cfg(feature = "paste")] +use clipboard::{ClipboardContext, ClipboardProvider}; use regex::Regex; use std::fs::File; use std::io; @@ -17,7 +17,7 @@ use std::path::PathBuf; pub fn get_candidate_hashes(opt: &Opt) -> Result, String> { if let Some(hash_string) = &opt.hash { return Ok(Some(get_by_parameter(hash_string)?)); - } else if opt.paste { + } else if opt.get_paste() { return Ok(Some(get_from_clipboard()?)); } else if let Some(hash_file) = &opt.hash_file { return Ok(Some(get_from_file(hash_file)?)); @@ -43,28 +43,35 @@ fn get_by_parameter(param: &str) -> Result { /// Generate a candidate hash from the system clipboard, or throw an error. fn get_from_clipboard() -> Result { - let mut ctx: ClipboardContext = match ClipboardProvider::new() { - Ok(ctx) => ctx, - Err(e) => return Err(format!("Error getting system clipboard: {}", e)), - }; + #[cfg(feature = "paste")] + { + let mut ctx: ClipboardContext = match ClipboardProvider::new() { + Ok(ctx) => ctx, + Err(e) => return Err(format!("Error getting system clipboard: {}", e)), + }; - let possible_hash = match ctx.get_contents() { - Ok(value) => value, - Err(e) => format!("Error reading from clipboard: {}", e), - }; + let possible_hash = match ctx.get_contents() { + Ok(value) => value, + Err(e) => format!("Error reading from clipboard: {}", e), + }; - let bytes = hex::decode(&possible_hash) - .map_err(|_| "Clipboard contains invalid or truncated hex".to_owned())?; - let alg = Algorithm::from_len(bytes.len())?; - let candidate = CandidateHash { - filename: None, - bytes, - }; - Ok(CandidateHashes { - alg, - hashes: vec![candidate], - source: VerificationSource::Clipboard, - }) + let bytes = hex::decode(&possible_hash) + .map_err(|_| "Clipboard contains invalid or truncated hex".to_owned())?; + let alg = Algorithm::from_len(bytes.len())?; + let candidate = CandidateHash { + filename: None, + bytes, + }; + return Ok(CandidateHashes { + alg, + hashes: vec![candidate], + source: VerificationSource::Clipboard, + }); + } + #[cfg(not(feature = "paste"))] + { + return Err("Paste not implemented".to_owned()); + } } /// Generate a candidate hash from the digests file specified (could be "-" for STDIN), or throw an error.