Add importprivkey support to btcctl.

This commit is contained in:
Josh Rickmar 2013-11-18 14:51:31 -05:00
parent 5bf879dcfc
commit 5ec4aaff09

View file

@ -60,6 +60,7 @@ var commandHandlers = map[string]*handlerData{
"getpeerinfo": &handlerData{0, 0, displaySpewDump, nil, makeGetPeerInfo, ""}, "getpeerinfo": &handlerData{0, 0, displaySpewDump, nil, makeGetPeerInfo, ""},
"getrawmempool": &handlerData{0, 0, displaySpewDump, nil, makeGetRawMempool, ""}, "getrawmempool": &handlerData{0, 0, displaySpewDump, nil, makeGetRawMempool, ""},
"getrawtransaction": &handlerData{1, 1, displaySpewDump, []conversionHandler{nil, toInt}, makeGetRawTransaction, "<txhash> [verbose=0]"}, "getrawtransaction": &handlerData{1, 1, displaySpewDump, []conversionHandler{nil, toInt}, makeGetRawTransaction, "<txhash> [verbose=0]"},
"importprivkey": &handlerData{1, 2, displayGeneric, []conversionHandler{nil, nil, toBool}, makeImportPrivKey, "<wifprivkey> [label] [rescan=true]"},
"verifychain": &handlerData{0, 2, displaySpewDump, []conversionHandler{toInt, toInt}, makeVerifyChain, "[level] [depth]"}, "verifychain": &handlerData{0, 2, displaySpewDump, []conversionHandler{toInt, toInt}, makeVerifyChain, "[level] [depth]"},
"stop": &handlerData{0, 0, displayGeneric, nil, makeStop, ""}, "stop": &handlerData{0, 0, displayGeneric, nil, makeStop, ""},
} }
@ -90,6 +91,14 @@ func toInt64(val string) (interface{}, error) {
return idx, nil return idx, nil
} }
// toBool attempts to convert the passed string to a bool. It returns the
// bool packed into the empty interface so it can be used in the calls which
// accept interfaces. An error will be returned if the string can't be
// converted to a bool.
func toBool(val string) (interface{}, error) {
return strconv.ParseBool(val)
}
// displayGeneric is a displayHandler that simply displays the passed interface // displayGeneric is a displayHandler that simply displays the passed interface
// using fmt.Println. // using fmt.Println.
func displayGeneric(reply interface{}) error { func displayGeneric(reply interface{}) error {
@ -191,6 +200,22 @@ func makeGetRawTransaction(args []interface{}) (btcjson.Cmd, error) {
return btcjson.NewGetRawTransactionCmd("btcctl", args[0].(string), bi) return btcjson.NewGetRawTransactionCmd("btcctl", args[0].(string), bi)
} }
// makeImportPrivKey generates the cmd structure for
// importprivkey commands.
func makeImportPrivKey(args []interface{}) (btcjson.Cmd, error) {
var label string
var rescan bool
if len(args) > 1 {
label = args[1].(string)
}
if len(args) > 2 {
rescan = args[2].(bool)
}
return btcjson.NewImportPrivKeyCmd("btcctl", args[0].(string), label,
rescan)
}
// makeStop generates the cmd structure for stop comands. // makeStop generates the cmd structure for stop comands.
func makeStop(args []interface{}) (btcjson.Cmd, error) { func makeStop(args []interface{}) (btcjson.Cmd, error) {
return btcjson.NewStopCmd("btcctl") return btcjson.NewStopCmd("btcctl")