diff options
author | Robin Krahl <robin.krahl@ireas.org> | 2020-01-23 10:54:09 +0100 |
---|---|---|
committer | Daniel Mueller <deso@posteo.net> | 2020-09-01 21:12:43 -0700 |
commit | 3f430bac70a946c776a930fabc5b64a788113452 (patch) | |
tree | b1989fd259a159eb7982002155dc8b482948c1cd /src/args.rs | |
parent | bb592ad9909c84c3c72252e1775b1cd2abc1e881 (diff) | |
download | nitrocli-3f430bac70a946c776a930fabc5b64a788113452.tar.gz nitrocli-3f430bac70a946c776a930fabc5b64a788113452.tar.bz2 |
Implement configuration handling
This patch implements basic configuration handling that reads a
configuration file and stores the parsed data in the ExecCtx and RunCtx
structs. It supports three configuration items:
- model (previously only --model)
- no_cache (previously only NITROCLI_NO_CACHE)
- verbosity (previously only --verbose)
Diffstat (limited to 'src/args.rs')
-rw-r--r-- | src/args.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/args.rs b/src/args.rs index 0f548e4..7f2dc31 100644 --- a/src/args.rs +++ b/src/args.rs @@ -18,7 +18,7 @@ // ************************************************************************* /// Provides access to a Nitrokey device -#[derive(structopt::StructOpt)] +#[derive(Debug, structopt::StructOpt)] #[structopt(name = "nitrocli")] pub struct Args { /// Increases the log level (can be supplied multiple times) @@ -57,6 +57,19 @@ impl From<DeviceModel> for nitrokey::Model { } } +impl<'de> serde::Deserialize<'de> for DeviceModel { + fn deserialize<D>(deserializer: D) -> Result<DeviceModel, D::Error> + where + D: serde::Deserializer<'de>, + { + use serde::de::Error as _; + use std::str::FromStr as _; + + let s = String::deserialize(deserializer)?; + DeviceModel::from_str(&s).map_err(D::Error::custom) + } +} + Command! { /// A top-level command for nitrocli. Command, [ |