]> code.octet-stream.net Git - hashgood/blobdiff - src/main.rs
Update clipboard dep with copypasta fork
[hashgood] / src / main.rs
index 2f1e7f321c7328e6e0772b0392f4b1d3b384d28e..2c7e1899dbbf4fab3f72f60ba79570bd86fc6c6d 100644 (file)
@@ -16,6 +16,7 @@ mod verify;
 #[structopt(name = "hashgood")]
 pub struct Opt {
     /// Read the hash from the clipboard
+    #[cfg(feature = "paste")]
     #[structopt(short = "p", long = "paste")]
     paste: bool,
 
@@ -36,6 +37,19 @@ pub struct Opt {
     hash: Option<String>,
 }
 
+impl Opt {
+    fn get_paste(&self) -> bool {
+        #[cfg(feature = "paste")]
+        {
+            return self.paste;
+        }
+        #[cfg(not(feature = "paste"))]
+        {
+            return false;
+        }
+    }
+}
+
 /// Types of supported digest algorithm
 #[derive(Debug, PartialEq, Copy, Clone)]
 pub enum Algorithm {
@@ -57,6 +71,7 @@ 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,
@@ -88,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>,
@@ -95,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>,
@@ -179,12 +196,12 @@ fn hashgood() -> Result<(), Box<dyn Error>> {
 fn get_verified_options() -> Result<Opt, String> {
     let opt = Opt::from_args();
     let hash_methods =
-        opt.hash.is_some() as i32 + opt.paste as i32 + opt.hash_file.is_some() as i32;
+        opt.hash.is_some() as i32 + opt.get_paste() as i32 + opt.hash_file.is_some() as i32;
     if hash_methods > 1 {
         if opt.hash.is_some() {
             eprintln!("* specified as command line argument");
         }
-        if opt.paste {
+        if opt.get_paste() {
             eprintln!("* paste from clipboard (-p)")
         }
         if opt.hash_file.is_some() {