awsmfa 0.3.0

The automation tool for Multi-Factor Authentication (MFA) process to use awscli.
Documentation
use crate::Result;

mod base;
mod config;
mod credentials;
mod sts;

use base::{ConfigFileBase, Profile};
use config::Config;
use credentials::Credentials;
pub use sts::GetSessionToken;

#[derive(Debug)]
pub struct AwsConfigs {
    config: Config,
    credentials: Credentials,
}

impl AwsConfigs {
    pub fn new() -> Result<Self> {
        Ok(Self {
            config: Config::new()?,
            credentials: Credentials::new()?,
        })
    }

    pub fn get_mfa_serial(&self, name: &str) -> Result<String> {
        self.config.get_mfa_serial(name)
    }

    pub fn set_profile(self, src: &str, dst: &str, cred: sts::StsCredential) -> Result<Self> {
        let Self {
            config,
            credentials,
        } = self;

        Ok(Self {
            config: config.set_mfa_profile(src, dst)?,
            credentials: credentials.set_sts_cred(dst, cred),
        })
    }

    pub fn save(&self) -> Result<()> {
        self.config.save()?;
        self.credentials.save()
    }
}