aboutsummaryrefslogtreecommitdiff
path: root/src/args.rs
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2020-01-23 10:54:09 +0100
committerDaniel Mueller <deso@posteo.net>2020-09-01 21:12:43 -0700
commit3f430bac70a946c776a930fabc5b64a788113452 (patch)
treeb1989fd259a159eb7982002155dc8b482948c1cd /src/args.rs
parentbb592ad9909c84c3c72252e1775b1cd2abc1e881 (diff)
downloadnitrocli-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.rs15
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, [