clap-digest
Integration to choose digest with clap on a CLI.
Features
-
A
clap::ValueEnum
implementation for the different digest algorithm types:use ; use Digest; new .action .value_parser
-
Ready-to-use
clap::Arg
implementations:use ; use ; let cli = new .arg .arg; let args = cli.get_matches_from; if args.get_flag else
See the
clap_digest::arg
module for more information. -
A conversion from
clap_digest::Digest
todigest::DynDigest
:use ; // fn doing some hashing, using any DynDigest implementation // parse user-supplied CLI input to clap_digest::Digest with clap // suppose user runs this with: `command --digest MD5` // let args = cli.get_matches(); let digest = *args..unwrap; // convert to DynDigest let mut digest: = digest.into; // use with hashing function let hash = dyn_hash; assert_eq!;
-
Digest algorithm groups are feature-gated. Use
cargo feature clap-digest
for a complete listing. At least one digest algorithm group feature must be chosen. To limit the digest algorithm families you want to support in your crate, define your own features, e.g.:[] = ["sha2"] = ["clap-digest/md5"] = ["clap-digest/sha1"] = ["clap-digest/sha2"]
Example
For a complete CLI example, see examples/cksum.rs
.
$ cargo run --example cksum -- -d SHA1 Cargo.toml
7a96ee85606435fe1f39c3fa6bdf4cf9bbbc338c Cargo.toml
$ sha1sum Cargo.toml
7a96ee85606435fe1f39c3fa6bdf4cf9bbbc338c Cargo.toml
$ cargo run --example cksum -- -d MD5 Cargo.toml | md5sum -c
Cargo.toml: OK
List all supported algorithms:
$ cargo run --example cksum -- --list-digests
BLAKE2b512
BLAKE2s256
BLAKE3
...
All algorithm groups are feature-gated, so you can choose:
$ cargo run --example cksum --no-default-features --features md5,sha1,sha2 -- --list-digests
MD5
SHA1
SHA224
SHA256
SHA384
SHA512
SHA512/224
SHA512/256