From 93c605418568bf71bcc3be6956f07f9650b45fea Mon Sep 17 00:00:00 2001
From: Daniel Mueller <deso@posteo.net>
Date: Sat, 11 Apr 2020 12:29:22 -0700
Subject: Merge config_set function into commands.rs

As a next step moving us closer towards removing the args module, this
change merges the config_set function into the existing function of the
same name in the commands module.
---
 src/arg_defs.rs |  2 +-
 src/args.rs     | 15 ---------------
 src/commands.rs | 21 +++++++++++++--------
 3 files changed, 14 insertions(+), 24 deletions(-)

diff --git a/src/arg_defs.rs b/src/arg_defs.rs
index fd296e4..133ef19 100644
--- a/src/arg_defs.rs
+++ b/src/arg_defs.rs
@@ -93,7 +93,7 @@ Command! {ConfigCommand, [
   /// Prints the Nitrokey configuration
   Get => crate::commands::config_get,
   /// Changes the Nitrokey configuration
-  Set(ConfigSetArgs) => crate::args::config_set,
+  Set(ConfigSetArgs) => crate::commands::config_set,
 ]}
 
 #[derive(Debug, PartialEq, structopt::StructOpt)]
diff --git a/src/args.rs b/src/args.rs
index 3a1f2c8..d0b2a88 100644
--- a/src/args.rs
+++ b/src/args.rs
@@ -22,7 +22,6 @@ use std::io;
 use std::result;
 
 use crate::arg_defs;
-use crate::commands;
 use crate::error::Error;
 use crate::RunCtx;
 
@@ -68,20 +67,6 @@ impl<'io> Stdio for ExecCtx<'io> {
   }
 }
 
-pub fn config_set(ctx: &mut ExecCtx<'_>, args: arg_defs::ConfigSetArgs) -> Result<()> {
-  let numlock = arg_defs::ConfigOption::try_from(args.no_numlock, args.numlock, "numlock")?;
-  let capslock = arg_defs::ConfigOption::try_from(args.no_capslock, args.capslock, "capslock")?;
-  let scrollock = arg_defs::ConfigOption::try_from(args.no_scrollock, args.scrollock, "scrollock")?;
-  let otp_pin = if args.otp_pin {
-    Some(true)
-  } else if args.no_otp_pin {
-    Some(false)
-  } else {
-    None
-  };
-  commands::config_set(ctx, numlock, capslock, scrollock, otp_pin)
-}
-
 /// Parse the command-line arguments and execute the selected command.
 pub(crate) fn handle_arguments(ctx: &mut RunCtx<'_>, args: Vec<String>) -> Result<()> {
   use structopt::StructOpt;
diff --git a/src/commands.rs b/src/commands.rs
index 55e6707..b40d552 100644
--- a/src/commands.rs
+++ b/src/commands.rs
@@ -579,13 +579,18 @@ pub fn config_get(ctx: &mut args::ExecCtx<'_>) -> Result<()> {
 }
 
 /// Write the Nitrokey configuration.
-pub fn config_set(
-  ctx: &mut args::ExecCtx<'_>,
-  numlock: arg_defs::ConfigOption<u8>,
-  capslock: arg_defs::ConfigOption<u8>,
-  scrollock: arg_defs::ConfigOption<u8>,
-  user_password: Option<bool>,
-) -> Result<()> {
+pub fn config_set(ctx: &mut args::ExecCtx<'_>, args: arg_defs::ConfigSetArgs) -> Result<()> {
+  let numlock = arg_defs::ConfigOption::try_from(args.no_numlock, args.numlock, "numlock")?;
+  let capslock = arg_defs::ConfigOption::try_from(args.no_capslock, args.capslock, "capslock")?;
+  let scrollock = arg_defs::ConfigOption::try_from(args.no_scrollock, args.scrollock, "scrollock")?;
+  let otp_pin = if args.otp_pin {
+    Some(true)
+  } else if args.no_otp_pin {
+    Some(false)
+  } else {
+    None
+  };
+
   with_device(ctx, |ctx, device| {
     let mut device = authenticate_admin(ctx, device)?;
     let config = device
@@ -595,7 +600,7 @@ pub fn config_set(
       numlock: numlock.or(config.numlock),
       capslock: capslock.or(config.capslock),
       scrollock: scrollock.or(config.scrollock),
-      user_password: user_password.unwrap_or(config.user_password),
+      user_password: otp_pin.unwrap_or(config.user_password),
     };
     device
       .write_config(config)
-- 
cgit v1.2.3