diff options
author | Robin Krahl <robin.krahl@ireas.org> | 2020-08-23 16:26:10 +0200 |
---|---|---|
committer | Daniel Mueller <deso@posteo.net> | 2021-01-10 17:37:53 -0800 |
commit | 53d89aa75ace7ed44187ccf2bef4a156cd126cd7 (patch) | |
tree | 9bd2a1b69032b95bb668feb24c8f1dfb800244a9 | |
parent | 4f37ab793f2a094ce24e010c06d9c71ab95873a7 (diff) | |
download | nitrocli-53d89aa75ace7ed44187ccf2bef4a156cd126cd7.tar.gz nitrocli-53d89aa75ace7ed44187ccf2bef4a156cd126cd7.tar.bz2 |
Add Context::from_env constructor
This patch adds the from_env constructor to Context to make the main
function easier to read.
-rw-r--r-- | src/main.rs | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/main.rs b/src/main.rs index 79a9c0b..09ceedd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -131,6 +131,25 @@ pub struct Context<'io> { pub config: config::Config, } +impl<'io> Context<'io> { + fn from_env<O, E>(stdout: &'io mut O, stderr: &'io mut E, config: config::Config) -> Context<'io> + where + O: io::Write, + E: io::Write, + { + Context { + stdout, + stderr, + admin_pin: env::var_os(NITROCLI_ADMIN_PIN), + user_pin: env::var_os(NITROCLI_USER_PIN), + new_admin_pin: env::var_os(NITROCLI_NEW_ADMIN_PIN), + new_user_pin: env::var_os(NITROCLI_NEW_USER_PIN), + password: env::var_os(NITROCLI_PASSWORD), + config, + } + } +} + fn run<'ctx, 'io: 'ctx>(ctx: &'ctx mut Context<'io>, args: Vec<String>) -> i32 { match handle_arguments(ctx, args) { Ok(()) => 0, @@ -150,16 +169,7 @@ fn main() { let rc = match config::Config::load() { Ok(config) => { let args = env::args().collect::<Vec<_>>(); - let ctx = &mut Context { - stdout: &mut stdout, - stderr: &mut stderr, - admin_pin: env::var_os(NITROCLI_ADMIN_PIN), - user_pin: env::var_os(NITROCLI_USER_PIN), - new_admin_pin: env::var_os(NITROCLI_NEW_ADMIN_PIN), - new_user_pin: env::var_os(NITROCLI_NEW_USER_PIN), - password: env::var_os(NITROCLI_PASSWORD), - config, - }; + let ctx = &mut Context::from_env(&mut stdout, &mut stderr, config); run(ctx, args) } |