diff options
| author | Robin Krahl <robin.krahl@ireas.org> | 2020-08-23 16:26:10 +0200 | 
|---|---|---|
| committer | Daniel Mueller <deso@posteo.net> | 2020-09-05 11:36:14 -0700 | 
| commit | 16ce6d3695f4f54a128d32835232f255a6f6d56d (patch) | |
| tree | 68f36ea4028cf2f2c8bb14e66fce78baa301ceb5 | |
| parent | 621bc6220a87368c87cd667552438680cae6332a (diff) | |
| download | nitrocli-16ce6d3695f4f54a128d32835232f255a6f6d56d.tar.gz nitrocli-16ce6d3695f4f54a128d32835232f255a6f6d56d.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)      } | 
