basic cli working
This commit is contained in:
74
src/main.rs
74
src/main.rs
@@ -3,9 +3,81 @@
|
||||
mod args;
|
||||
use args::Args;
|
||||
|
||||
use hashstream::{CRC32TYPE, HashType, Hashes};
|
||||
|
||||
use clap::Parser;
|
||||
|
||||
use std::io;
|
||||
use std::io::{Read, stdin};
|
||||
use std::process::exit;
|
||||
|
||||
fn main() {
|
||||
let args = Args::parse();
|
||||
println!("Hello, world!");
|
||||
let mut hashes = Vec::new();
|
||||
|
||||
if args.sha256 || args.all {
|
||||
hashes.push(HashType::SHA256)
|
||||
}
|
||||
|
||||
if args.sha3_256 || args.all {
|
||||
hashes.push(HashType::SHA3_256)
|
||||
}
|
||||
|
||||
if args.sha1 || args.all {
|
||||
hashes.push(HashType::SHA1)
|
||||
}
|
||||
|
||||
if args.crc32_iso || args.all {
|
||||
hashes.push(HashType::CRC32(CRC32TYPE::ISO))
|
||||
}
|
||||
|
||||
if args.crc32_posix || args.all {
|
||||
hashes.push(HashType::CRC32(CRC32TYPE::CKSUM))
|
||||
}
|
||||
|
||||
if args.crc32_xfer || args.all {
|
||||
hashes.push(HashType::CRC32(CRC32TYPE::XFER))
|
||||
}
|
||||
|
||||
if args.blake256 || args.all {
|
||||
hashes.push(HashType::BLAKE256)
|
||||
}
|
||||
|
||||
if args.blake512 || args.all {
|
||||
hashes.push(HashType::BLAKE512)
|
||||
}
|
||||
|
||||
if args.blake3 || args.all {
|
||||
hashes.push(HashType::BLAKE3)
|
||||
}
|
||||
|
||||
if args.md5 || args.all {
|
||||
hashes.push(HashType::MD5)
|
||||
}
|
||||
|
||||
if hashes.is_empty() {
|
||||
eprintln!("Error: At least one hashtype or --all is required");
|
||||
exit(255);
|
||||
}
|
||||
|
||||
let mut hashers = Hashes::new(&hashes);
|
||||
|
||||
let stdin = stdin();
|
||||
let mut lock = stdin.lock();
|
||||
|
||||
let mut buf = [0u8; 1024];
|
||||
|
||||
while let Ok(count) = lock.read(&mut buf) {
|
||||
if count > 0 {
|
||||
hashers.digest(&buf[0..count])
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
let ret = hashers.complete();
|
||||
|
||||
for hash in ret {
|
||||
println!("{}", hash.serialize())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user