From 1bb0877a2034596d293e6c66ac57b47344ff6eca Mon Sep 17 00:00:00 2001 From: jun Date: Wed, 18 Jul 2018 17:44:53 +0900 Subject: [PATCH] Add account remove command --- codechain/account_command.rs | 33 +++++++++++++++++++++++++++------ codechain/codechain.yml | 7 +++++++ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/codechain/account_command.rs b/codechain/account_command.rs index be6d1063fb..a7089a291f 100644 --- a/codechain/account_command.rs +++ b/codechain/account_command.rs @@ -20,7 +20,7 @@ use std::str::FromStr; use rpassword; use ccore::AccountProvider; -use ckey::Private; +use ckey::{Address, Private}; use ckeystore::accounts_dir::RootDiskDirectory; use ckeystore::KeyStore; use clap::ArgMatches; @@ -70,11 +70,7 @@ pub fn run_account_command(matches: ArgMatches) -> Result<(), String> { ("import-raw", Some(matches)) => { let key = { let val = matches.value_of("RAW_KEY").expect("RAW_KEY arg is required and its index is 1"); - if val.starts_with("0x") { - &val[2..] - } else { - &val[..] - } + read_raw_key(val) }; match Private::from_str(key) { Ok(private) => { @@ -98,6 +94,23 @@ pub fn run_account_command(matches: ArgMatches) -> Result<(), String> { } Ok(()) } + ("remove", Some(matches)) => { + let key = { + let val = matches.value_of("ADDRESS").expect("ADDRESS arg is required and its index is 1"); + read_raw_key(val) + }; + match Address::from_str(key) { + Ok(address) => { + let password = rpassword::prompt_password_stdout("Password: ").unwrap(); + match ap.remove_account(address, password.as_ref()) { + Ok(_) => println!("{:?} is deleted", address), + Err(e) => return Err(format!("{:?}", e)), + } + } + Err(e) => return Err(format!("{:?}", e)), + } + Ok(()) + } _ => Err("Invalid subcommand".to_string()), } } @@ -111,3 +124,11 @@ fn read_password_and_confirm() -> Option { None } } + +fn read_raw_key(val: &str) -> &str { + if val.starts_with("0x") { + &val[2..] + } else { + &val[..] + } +} diff --git a/codechain/codechain.yml b/codechain/codechain.yml index bd278aa0c9..9f8e8cb2e5 100644 --- a/codechain/codechain.yml +++ b/codechain/codechain.yml @@ -206,3 +206,10 @@ subcommands: index: 1 - list: about: list managed accounts + - remove: + about: remove a account + args: + - ADDRESS: + help: Address to remove + required: true + index: 1