]> code.octet-stream.net Git - hashgood/blobdiff - src/main.rs
Test on all OSes on push/PR
[hashgood] / src / main.rs
index a82c40a69f1d12ff400bee560dd41b52ba3079c5..fd965dac05a1576b4f380cf596eff66559db779d 100644 (file)
@@ -1,5 +1,5 @@
 use std::error::Error;
-use std::path::PathBuf;
+use std::path::{Path, PathBuf};
 use std::process;
 use structopt::StructOpt;
 
@@ -39,10 +39,12 @@ pub struct Opt {
 
 impl Opt {
     fn get_paste(&self) -> bool {
-        #[cfg(feature = "paste")] {
+        #[cfg(feature = "paste")]
+        {
             return self.paste;
         }
-        #[cfg(not(feature = "paste"))] {
+        #[cfg(not(feature = "paste"))]
+        {
             return false;
         }
     }
@@ -69,11 +71,12 @@ impl Algorithm {
 }
 
 /// The method by which one or more hashes were supplied to verify the calculated digest
+#[derive(Debug, PartialEq)]
 pub enum VerificationSource {
     CommandArgument,
     Clipboard,
-    RawFile(PathBuf),
-    DigestsFile(PathBuf),
+    RawFile(String),
+    DigestsFile(String),
 }
 
 /// A complete standalone hash result
@@ -84,7 +87,7 @@ pub struct Hash {
 }
 
 impl Hash {
-    pub fn new(alg: Algorithm, bytes: Vec<u8>, path: &PathBuf) -> Self {
+    pub fn new(alg: Algorithm, bytes: Vec<u8>, path: &Path) -> Self {
         // Taking the filename component should always work?
         // If not, just fall back to the full path
         let filename = match path.file_name() {
@@ -100,6 +103,7 @@ impl Hash {
 }
 
 /// A possible hash to match against. The algorithm is assumed.
+#[derive(Debug, PartialEq)]
 pub struct CandidateHash {
     bytes: Vec<u8>,
     filename: Option<String>,
@@ -107,6 +111,7 @@ pub struct CandidateHash {
 
 /// A list of candidate hashes that our input could potentially match. At this point it is
 /// assumed that we will be verifying a digest of a particular, single algorithm.
+#[derive(Debug, PartialEq)]
 pub struct CandidateHashes {
     alg: Algorithm,
     hashes: Vec<CandidateHash>,
@@ -150,7 +155,7 @@ fn main() {
 fn hashgood() -> Result<(), Box<dyn Error>> {
     let opt = get_verified_options()?;
     let candidates = verify::get_candidate_hashes(&opt)?;
-    let input = calculate::get_input_reader(&opt.input)?;
+    let input = calculate::get_input_reader(opt.input.as_path())?;
     if let Some(c) = candidates {
         // If we have a candidate hash of a particular type, use that specific algorithm
         let hashes = calculate::create_digests(&[c.alg], input)?;