use std::{
fs::File,
io::{copy, BufReader, Error},
path::PathBuf,
};
use sha2::{Digest, Sha256};
use structopt::StructOpt;
#[derive(StructOpt, Debug)]
#[structopt(
name = "sha256sum",
about = "Generate checksum for files with the sha256 algorithm"
)]
pub struct CommandLine {
#[structopt(name = "FILE", parse(from_os_str))]
pub file: PathBuf,
}
fn main() -> Result<(), Error> {
let cmd = CommandLine::from_args();
let input = File::open(cmd.file)?;
let mut reader = BufReader::new(input);
let mut hasher = Sha256::new();
copy(&mut reader, &mut hasher)?;
let digest = hasher.finalize();
println!("{digest:x}");
Ok(())
}