@@ -20,7 +20,7 @@ use std::str::FromStr;
2020use rpassword;
2121
2222use ccore:: AccountProvider ;
23- use ckey:: Private ;
23+ use ckey:: { Address , Private } ;
2424use ckeystore:: accounts_dir:: RootDiskDirectory ;
2525use ckeystore:: KeyStore ;
2626use clap:: ArgMatches ;
@@ -70,11 +70,7 @@ pub fn run_account_command(matches: ArgMatches) -> Result<(), String> {
7070 ( "import-raw" , Some ( matches) ) => {
7171 let key = {
7272 let val = matches. value_of ( "RAW_KEY" ) . expect ( "RAW_KEY arg is required and its index is 1" ) ;
73- if val. starts_with ( "0x" ) {
74- & val[ 2 ..]
75- } else {
76- & val[ ..]
77- }
73+ read_raw_key ( key)
7874 } ;
7975 match Private :: from_str ( key) {
8076 Ok ( private) => {
@@ -98,7 +94,25 @@ pub fn run_account_command(matches: ArgMatches) -> Result<(), String> {
9894 }
9995 Ok ( ( ) )
10096 }
97+ ( "remove" , Some ( matches) ) => {
98+ let key = {
99+ let val = matches. value_of ( "ADDRESS" ) . expect ( "ADDRESS arg is required and its index is 1" ) ;
100+ read_raw_key ( val)
101+ } ;
102+ match Address :: from_str ( key) {
103+ Ok ( address) => {
104+ let password = rpassword:: prompt_password_stdout ( "Password: " ) . unwrap ( ) ;
105+ match ap. remove_account ( address, password. as_ref ( ) ) {
106+ Ok ( _) => println ! ( "{:?} is deleted" , address) ,
107+ Err ( e) => return Err ( format ! ( "{:?}" , e) ) ,
108+ }
109+ }
110+ Err ( e) => return Err ( format ! ( "{:?}" , e) ) ,
111+ }
112+ Ok ( ( ) )
113+ }
101114 _ => Err ( "Invalid subcommand" . to_string ( ) ) ,
115+
102116 }
103117}
104118
@@ -111,3 +125,11 @@ fn read_password_and_confirm() -> Option<String> {
111125 None
112126 }
113127}
128+
129+ fn read_raw_key ( val : & str ) -> & str {
130+ if val. starts_with ( "0x" ) {
131+ & val[ 2 ..]
132+ } else {
133+ & val[ ..]
134+ }
135+ }
0 commit comments