fe663cf43f
- allow extracting the http client from web api transport - refactor most commands so that they can accept an external transport - update confirmer to use transport's http client - update remove command - update TwoFactorClient so it doesn't need to be mutable - update get_server_time so it requires a transport - update remove_authenticator - update login proceedure to use given transport - update usages of do_login - update setup - update trade - update code command - update qr-login command - make borrowcheck happy - make WebApiTransport Clone and remove Default impl - remove dead code - fix lints closes #177
47 lines
1.2 KiB
Rust
47 lines
1.2 KiB
Rust
use std::path::Path;
|
|
|
|
use log::*;
|
|
|
|
use crate::AccountManager;
|
|
|
|
use super::*;
|
|
|
|
#[derive(Debug, Clone, Parser, Default)]
|
|
#[clap(
|
|
about = "Import an account with steamguard already set up. It must not be encrypted. If you haven't used steamguard-cli before, you probably don't need to use this command."
|
|
)]
|
|
pub struct ImportCommand {
|
|
#[clap(long, help = "Whether or not the provided maFiles are from SDA.")]
|
|
pub sda: bool,
|
|
|
|
#[clap(long, help = "Paths to one or more maFiles, eg. \"./gaben.maFile\"")]
|
|
pub files: Vec<String>,
|
|
}
|
|
|
|
impl<T> ManifestCommand<T> for ImportCommand
|
|
where
|
|
T: Transport,
|
|
{
|
|
fn execute(&self, _transport: T, manager: &mut AccountManager) -> anyhow::Result<()> {
|
|
for file_path in self.files.iter() {
|
|
if self.sda {
|
|
let path = Path::new(&file_path);
|
|
let account = crate::accountmanager::migrate::load_and_upgrade_sda_account(path)?;
|
|
manager.add_account(account);
|
|
info!("Imported account: {}", &file_path);
|
|
} else {
|
|
match manager.import_account(file_path) {
|
|
Ok(_) => {
|
|
info!("Imported account: {}", &file_path);
|
|
}
|
|
Err(err) => {
|
|
bail!("Failed to import account: {} {}", &file_path, err);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
manager.save()?;
|
|
Ok(())
|
|
}
|
|
}
|