Moved cmd/basecli/commands into client/commands

This commit is contained in:
Ethan Frey 2017-07-18 22:21:57 +02:00
parent eb495e081b
commit 100522069d
15 changed files with 185 additions and 183 deletions

View File

@ -1,4 +1,4 @@
package commands package auto
import ( import (
"os" "os"

View File

@ -4,18 +4,23 @@ Package commands contains any general setup/helpers valid for all subcommands
package commands package commands
import ( import (
"errors" "encoding/hex"
"strings"
"github.com/pkg/errors"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"github.com/spf13/viper" "github.com/spf13/viper"
"github.com/tendermint/tmlibs/cli"
rpcclient "github.com/tendermint/tendermint/rpc/client"
"github.com/tendermint/light-client/certifiers" "github.com/tendermint/light-client/certifiers"
"github.com/tendermint/light-client/certifiers/client" "github.com/tendermint/light-client/certifiers/client"
"github.com/tendermint/light-client/certifiers/files" "github.com/tendermint/light-client/certifiers/files"
"github.com/tendermint/tmlibs/cli"
cmn "github.com/tendermint/tmlibs/common"
rpcclient "github.com/tendermint/tendermint/rpc/client"
"github.com/tendermint/basecoin"
"github.com/tendermint/basecoin/modules/auth"
) )
var ( var (
@ -28,19 +33,24 @@ const (
NodeFlag = "node" NodeFlag = "node"
) )
// AddBasicFlags adds --node and --chain-id, which we need for everything
func AddBasicFlags(cmd *cobra.Command) { func AddBasicFlags(cmd *cobra.Command) {
cmd.PersistentFlags().String(ChainFlag, "", "Chain ID of tendermint node") cmd.PersistentFlags().String(ChainFlag, "", "Chain ID of tendermint node")
cmd.PersistentFlags().String(NodeFlag, "", "<host>:<port> to tendermint rpc interface for this chain") cmd.PersistentFlags().String(NodeFlag, "", "<host>:<port> to tendermint rpc interface for this chain")
} }
// GetChainID reads ChainID from the flags
func GetChainID() string { func GetChainID() string {
return viper.GetString(ChainFlag) return viper.GetString(ChainFlag)
} }
// GetNode prepares a simple rpc.Client from the flags
func GetNode() rpcclient.Client { func GetNode() rpcclient.Client {
return rpcclient.NewHTTP(viper.GetString(NodeFlag), "/websocket") return rpcclient.NewHTTP(viper.GetString(NodeFlag), "/websocket")
} }
// GetProviders creates a trusted (local) seed provider and a remote
// provider based on configuration.
func GetProviders() (trusted certifiers.Provider, source certifiers.Provider) { func GetProviders() (trusted certifiers.Provider, source certifiers.Provider) {
if trustedProv == nil || sourceProv == nil { if trustedProv == nil || sourceProv == nil {
// initialize provider with files stored in homedir // initialize provider with files stored in homedir
@ -55,6 +65,7 @@ func GetProviders() (trusted certifiers.Provider, source certifiers.Provider) {
return trustedProv, sourceProv return trustedProv, sourceProv
} }
// GetCertifier constructs a dynamic certifier from the config info
func GetCertifier() (*certifiers.InquiringCertifier, error) { func GetCertifier() (*certifiers.InquiringCertifier, error) {
// load up the latest store.... // load up the latest store....
trust, source := GetProviders() trust, source := GetProviders()
@ -71,3 +82,35 @@ func GetCertifier() (*certifiers.InquiringCertifier, error) {
viper.GetString(ChainFlag), seed.Validators, trust, source) viper.GetString(ChainFlag), seed.Validators, trust, source)
return cert, nil return cert, nil
} }
// ParseAddress parses an address of form:
// [<chain>:][<app>:]<hex address>
// into a basecoin.Actor.
// If app is not specified or "", then assume auth.NameSigs
func ParseAddress(input string) (res basecoin.Actor, err error) {
chain, app := "", auth.NameSigs
input = strings.TrimSpace(input)
spl := strings.SplitN(input, ":", 3)
if len(spl) == 3 {
chain = spl[0]
spl = spl[1:]
}
if len(spl) == 2 {
if spl[0] != "" {
app = spl[0]
}
spl = spl[1:]
}
addr, err := hex.DecodeString(cmn.StripHex(spl[0]))
if err != nil {
return res, errors.Errorf("Address is invalid hex: %v\n", err)
}
res = basecoin.Actor{
ChainID: chain,
App: app,
Address: addr,
}
return
}

View File

@ -14,16 +14,19 @@ import (
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/spf13/viper" "github.com/spf13/viper"
"github.com/tendermint/basecoin/client/commands"
crypto "github.com/tendermint/go-crypto" crypto "github.com/tendermint/go-crypto"
keycmd "github.com/tendermint/go-crypto/cmd" keycmd "github.com/tendermint/go-crypto/cmd"
"github.com/tendermint/go-crypto/keys" "github.com/tendermint/go-crypto/keys"
lc "github.com/tendermint/light-client"
ctypes "github.com/tendermint/tendermint/rpc/core/types" ctypes "github.com/tendermint/tendermint/rpc/core/types"
lc "github.com/tendermint/light-client" "github.com/tendermint/basecoin"
"github.com/tendermint/basecoin/client/commands"
"github.com/tendermint/basecoin/modules/auth"
) )
// Validatable represents anything that can be Validated
type Validatable interface { type Validatable interface {
ValidateBasic() error ValidateBasic() error
} }
@ -37,6 +40,17 @@ func GetSigner() crypto.PubKey {
return info.PubKey return info.PubKey
} }
// GetSignerAct returns the address of the signer of the tx
// (as we still only support single sig)
func GetSignerAct() (res basecoin.Actor) {
// this could be much cooler with multisig...
signer := GetSigner()
if !signer.Empty() {
res = auth.SigPerm(signer.Address())
}
return res
}
// Sign if it is Signable, otherwise, just convert it to bytes // Sign if it is Signable, otherwise, just convert it to bytes
func Sign(tx interface{}) (packet []byte, err error) { func Sign(tx interface{}) (packet []byte, err error) {
name := viper.GetString(NameFlag) name := viper.GetString(NameFlag)

View File

@ -0,0 +1,34 @@
package txs
import (
"github.com/pkg/errors"
wire "github.com/tendermint/go-wire"
"github.com/tendermint/light-client/proofs"
ctypes "github.com/tendermint/tendermint/rpc/core/types"
"github.com/tendermint/basecoin"
)
// BaseTxPresenter this decodes all basecoin tx
type BaseTxPresenter struct {
proofs.RawPresenter // this handles MakeKey as hex bytes
}
// ParseData - unmarshal raw bytes to a basecoin tx
func (BaseTxPresenter) ParseData(raw []byte) (interface{}, error) {
var tx basecoin.Tx
err := wire.ReadBinaryBytes(raw, &tx)
return tx, err
}
// ValidateResult returns an appropriate error if the server rejected the
// tx in CheckTx or DeliverTx
func ValidateResult(res *ctypes.ResultBroadcastTxCommit) error {
if res.CheckTx.IsErr() {
return errors.Errorf("CheckTx: (%d): %s", res.CheckTx.Code, res.CheckTx.Log)
}
if res.DeliverTx.IsErr() {
return errors.Errorf("DeliverTx: (%d): %s", res.DeliverTx.Code, res.DeliverTx.Log)
}
return nil
}

View File

@ -0,0 +1,45 @@
package txs
import (
"github.com/spf13/pflag"
"github.com/tendermint/basecoin"
)
var (
// Middleware must be set in main.go to defined the wrappers we should apply
Middleware Wrapper
)
// Wrapper defines the information needed for each middleware package that
// wraps the data. They should read all configuration out of bounds via viper.
type Wrapper interface {
Wrap(basecoin.Tx) (basecoin.Tx, error)
Register(*pflag.FlagSet)
}
// Wrappers combines a list of wrapper middlewares.
// The first one is the inner-most layer, eg. Fee, Nonce, Chain, Auth
type Wrappers []Wrapper
var _ Wrapper = Wrappers{}
// Wrap applies the wrappers to the passed in tx in order,
// aborting on the first error
func (ws Wrappers) Wrap(tx basecoin.Tx) (basecoin.Tx, error) {
var err error
for _, w := range ws {
tx, err = w.Wrap(tx)
if err != nil {
break
}
}
return tx, err
}
// Register adds any needed flags to the command
func (ws Wrappers) Register(fs *pflag.FlagSet) {
for _, w := range ws {
w.Register(fs)
}
}

View File

@ -1,111 +0,0 @@
package commands
import (
"encoding/hex"
"fmt"
"strings"
"github.com/pkg/errors"
"github.com/spf13/pflag"
txcmd "github.com/tendermint/basecoin/client/commands/txs"
cmn "github.com/tendermint/tmlibs/common"
ctypes "github.com/tendermint/tendermint/rpc/core/types"
"github.com/tendermint/basecoin"
"github.com/tendermint/basecoin/modules/auth"
)
var (
// Middleware must be set in main.go to defined the wrappers we should apply
Middleware Wrapper
)
// Wrapper defines the information needed for each middleware package that
// wraps the data. They should read all configuration out of bounds via viper.
type Wrapper interface {
Wrap(basecoin.Tx) (basecoin.Tx, error)
Register(*pflag.FlagSet)
}
// Wrappers combines a list of wrapper middlewares.
// The first one is the inner-most layer, eg. Fee, Nonce, Chain, Auth
type Wrappers []Wrapper
var _ Wrapper = Wrappers{}
// Wrap applies the wrappers to the passed in tx in order,
// aborting on the first error
func (ws Wrappers) Wrap(tx basecoin.Tx) (basecoin.Tx, error) {
var err error
for _, w := range ws {
tx, err = w.Wrap(tx)
if err != nil {
break
}
}
return tx, err
}
// Register adds any needed flags to the command
func (ws Wrappers) Register(fs *pflag.FlagSet) {
for _, w := range ws {
w.Register(fs)
}
}
// ValidateResult returns an appropriate error if the server rejected the
// tx in CheckTx or DeliverTx
func ValidateResult(res *ctypes.ResultBroadcastTxCommit) error {
if res.CheckTx.IsErr() {
return fmt.Errorf("CheckTx: (%d): %s", res.CheckTx.Code, res.CheckTx.Log)
}
if res.DeliverTx.IsErr() {
return fmt.Errorf("DeliverTx: (%d): %s", res.DeliverTx.Code, res.DeliverTx.Log)
}
return nil
}
// ParseAddress parses an address of form:
// [<chain>:][<app>:]<hex address>
// into a basecoin.Actor.
// If app is not specified or "", then assume auth.NameSigs
func ParseAddress(input string) (res basecoin.Actor, err error) {
chain, app := "", auth.NameSigs
input = strings.TrimSpace(input)
spl := strings.SplitN(input, ":", 3)
if len(spl) == 3 {
chain = spl[0]
spl = spl[1:]
}
if len(spl) == 2 {
if spl[0] != "" {
app = spl[0]
}
spl = spl[1:]
}
addr, err := hex.DecodeString(cmn.StripHex(spl[0]))
if err != nil {
return res, errors.Errorf("Address is invalid hex: %v\n", err)
}
res = basecoin.Actor{
ChainID: chain,
App: app,
Address: addr,
}
return
}
// GetSignerAct returns the address of the signer of the tx
// (as we still only support single sig)
func GetSignerAct() (res basecoin.Actor) {
// this could be much cooler with multisig...
signer := txcmd.GetSigner()
if !signer.Empty() {
res = auth.SigPerm(signer.Address())
}
return res
}

View File

@ -1,20 +0,0 @@
package commands
import (
wire "github.com/tendermint/go-wire"
"github.com/tendermint/light-client/proofs"
"github.com/tendermint/basecoin"
)
// BaseTxPresenter this decodes all basecoin tx
type BaseTxPresenter struct {
proofs.RawPresenter // this handles MakeKey as hex bytes
}
// ParseData - unmarshal raw bytes to a basecoin tx
func (BaseTxPresenter) ParseData(raw []byte) (interface{}, error) {
var tx basecoin.Tx
err := wire.ReadBinaryBytes(raw, &tx)
return tx, err
}

View File

@ -8,15 +8,15 @@ import (
"github.com/tendermint/abci/version" "github.com/tendermint/abci/version"
keycmd "github.com/tendermint/go-crypto/cmd" keycmd "github.com/tendermint/go-crypto/cmd"
"github.com/tendermint/tmlibs/cli"
"github.com/tendermint/basecoin/client/commands" "github.com/tendermint/basecoin/client/commands"
"github.com/tendermint/basecoin/client/commands/auto"
"github.com/tendermint/basecoin/client/commands/proofs" "github.com/tendermint/basecoin/client/commands/proofs"
"github.com/tendermint/basecoin/client/commands/proxy" "github.com/tendermint/basecoin/client/commands/proxy"
rpccmd "github.com/tendermint/basecoin/client/commands/rpc" rpccmd "github.com/tendermint/basecoin/client/commands/rpc"
"github.com/tendermint/basecoin/client/commands/seeds" "github.com/tendermint/basecoin/client/commands/seeds"
"github.com/tendermint/basecoin/client/commands/txs" txcmd "github.com/tendermint/basecoin/client/commands/txs"
"github.com/tendermint/tmlibs/cli"
bcmd "github.com/tendermint/basecoin/cmd/basecli/commands"
authcmd "github.com/tendermint/basecoin/modules/auth/commands" authcmd "github.com/tendermint/basecoin/modules/auth/commands"
basecmd "github.com/tendermint/basecoin/modules/base/commands" basecmd "github.com/tendermint/basecoin/modules/base/commands"
coincmd "github.com/tendermint/basecoin/modules/coin/commands" coincmd "github.com/tendermint/basecoin/modules/coin/commands"
@ -56,19 +56,19 @@ func main() {
coincmd.AccountQueryCmd, coincmd.AccountQueryCmd,
noncecmd.NonceQueryCmd, noncecmd.NonceQueryCmd,
) )
proofs.TxPresenters.Register("base", txcmd.BaseTxPresenter{})
// set up the middleware // set up the middleware
bcmd.Middleware = bcmd.Wrappers{ txcmd.Middleware = txcmd.Wrappers{
feecmd.FeeWrapper{}, feecmd.FeeWrapper{},
noncecmd.NonceWrapper{}, noncecmd.NonceWrapper{},
basecmd.ChainWrapper{}, basecmd.ChainWrapper{},
authcmd.SigWrapper{}, authcmd.SigWrapper{},
} }
bcmd.Middleware.Register(txs.RootCmd.PersistentFlags()) txcmd.Middleware.Register(txcmd.RootCmd.PersistentFlags())
// you will always want this for the base send command // you will always want this for the base send command
proofs.TxPresenters.Register("base", bcmd.BaseTxPresenter{}) txcmd.RootCmd.AddCommand(
txs.RootCmd.AddCommand(
// This is the default transaction, optional in your app // This is the default transaction, optional in your app
coincmd.SendTxCmd, coincmd.SendTxCmd,
) )
@ -81,10 +81,10 @@ func main() {
seeds.RootCmd, seeds.RootCmd,
rpccmd.RootCmd, rpccmd.RootCmd,
proofs.RootCmd, proofs.RootCmd,
txs.RootCmd, txcmd.RootCmd,
proxy.RootCmd, proxy.RootCmd,
VersionCmd, VersionCmd,
bcmd.AutoCompleteCmd, auto.AutoCompleteCmd,
) )
cmd := cli.PrepareMainCmd(BaseCli, "BC", os.ExpandEnv("$HOME/.basecli")) cmd := cli.PrepareMainCmd(BaseCli, "BC", os.ExpandEnv("$HOME/.basecli"))

View File

@ -4,10 +4,8 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"github.com/spf13/viper" "github.com/spf13/viper"
txcmd "github.com/tendermint/basecoin/client/commands/txs"
"github.com/tendermint/basecoin" "github.com/tendermint/basecoin"
bcmd "github.com/tendermint/basecoin/cmd/basecli/commands" txcmd "github.com/tendermint/basecoin/client/commands/txs"
"github.com/tendermint/basecoin/docs/guide/counter/plugins/counter" "github.com/tendermint/basecoin/docs/guide/counter/plugins/counter"
"github.com/tendermint/basecoin/modules/coin" "github.com/tendermint/basecoin/modules/coin"
) )
@ -43,7 +41,7 @@ func counterTx(cmd *cobra.Command, args []string) error {
return err return err
} }
tx, err = bcmd.Middleware.Wrap(tx) tx, err = txcmd.Middleware.Wrap(tx)
if err != nil { if err != nil {
return err return err
} }
@ -53,7 +51,7 @@ func counterTx(cmd *cobra.Command, args []string) error {
if err != nil { if err != nil {
return err return err
} }
if err = bcmd.ValidateResult(bres); err != nil { if err = txcmd.ValidateResult(bres); err != nil {
return err return err
} }

View File

@ -6,14 +6,13 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
keycmd "github.com/tendermint/go-crypto/cmd" keycmd "github.com/tendermint/go-crypto/cmd"
"github.com/tendermint/tmlibs/cli"
"github.com/tendermint/basecoin/client/commands" "github.com/tendermint/basecoin/client/commands"
"github.com/tendermint/basecoin/client/commands/proofs" "github.com/tendermint/basecoin/client/commands/proofs"
"github.com/tendermint/basecoin/client/commands/proxy" "github.com/tendermint/basecoin/client/commands/proxy"
"github.com/tendermint/basecoin/client/commands/seeds" "github.com/tendermint/basecoin/client/commands/seeds"
"github.com/tendermint/basecoin/client/commands/txs" txcmd "github.com/tendermint/basecoin/client/commands/txs"
"github.com/tendermint/tmlibs/cli"
bcmd "github.com/tendermint/basecoin/cmd/basecli/commands"
bcount "github.com/tendermint/basecoin/docs/guide/counter/cmd/countercli/commands" bcount "github.com/tendermint/basecoin/docs/guide/counter/cmd/countercli/commands"
authcmd "github.com/tendermint/basecoin/modules/auth/commands" authcmd "github.com/tendermint/basecoin/modules/auth/commands"
basecmd "github.com/tendermint/basecoin/modules/base/commands" basecmd "github.com/tendermint/basecoin/modules/base/commands"
@ -50,17 +49,17 @@ func main() {
) )
// set up the middleware // set up the middleware
bcmd.Middleware = bcmd.Wrappers{ txcmd.Middleware = txcmd.Wrappers{
feecmd.FeeWrapper{}, feecmd.FeeWrapper{},
noncecmd.NonceWrapper{}, noncecmd.NonceWrapper{},
basecmd.ChainWrapper{}, basecmd.ChainWrapper{},
authcmd.SigWrapper{}, authcmd.SigWrapper{},
} }
bcmd.Middleware.Register(txs.RootCmd.PersistentFlags()) txcmd.Middleware.Register(txcmd.RootCmd.PersistentFlags())
// Prepare transactions // Prepare transactions
proofs.TxPresenters.Register("base", bcmd.BaseTxPresenter{}) proofs.TxPresenters.Register("base", txcmd.BaseTxPresenter{})
txs.RootCmd.AddCommand( txcmd.RootCmd.AddCommand(
// This is the default transaction, optional in your app // This is the default transaction, optional in your app
coincmd.SendTxCmd, coincmd.SendTxCmd,
@ -75,7 +74,7 @@ func main() {
keycmd.RootCmd, keycmd.RootCmd,
seeds.RootCmd, seeds.RootCmd,
proofs.RootCmd, proofs.RootCmd,
txs.RootCmd, txcmd.RootCmd,
proxy.RootCmd, proxy.RootCmd,
) )

View File

@ -5,7 +5,7 @@ import (
"github.com/spf13/viper" "github.com/spf13/viper"
"github.com/tendermint/basecoin" "github.com/tendermint/basecoin"
bcmd "github.com/tendermint/basecoin/cmd/basecli/commands" txcmd "github.com/tendermint/basecoin/client/commands/txs"
"github.com/tendermint/basecoin/modules/auth" "github.com/tendermint/basecoin/modules/auth"
) )
@ -17,7 +17,7 @@ const (
// SigWrapper wraps a tx with a signature layer to hold pubkey sigs // SigWrapper wraps a tx with a signature layer to hold pubkey sigs
type SigWrapper struct{} type SigWrapper struct{}
var _ bcmd.Wrapper = SigWrapper{} var _ txcmd.Wrapper = SigWrapper{}
// Wrap will wrap the tx with OneSig or MultiSig depending on flags // Wrap will wrap the tx with OneSig or MultiSig depending on flags
func (SigWrapper) Wrap(tx basecoin.Tx) (res basecoin.Tx, err error) { func (SigWrapper) Wrap(tx basecoin.Tx) (res basecoin.Tx, err error) {

View File

@ -9,7 +9,7 @@ import (
"github.com/tendermint/basecoin/client/commands" "github.com/tendermint/basecoin/client/commands"
"github.com/tendermint/basecoin" "github.com/tendermint/basecoin"
bcmd "github.com/tendermint/basecoin/cmd/basecli/commands" txcmd "github.com/tendermint/basecoin/client/commands/txs"
"github.com/tendermint/basecoin/modules/base" "github.com/tendermint/basecoin/modules/base"
) )
@ -21,7 +21,7 @@ const (
// ChainWrapper wraps a tx with an chain info and optional expiration // ChainWrapper wraps a tx with an chain info and optional expiration
type ChainWrapper struct{} type ChainWrapper struct{}
var _ bcmd.Wrapper = ChainWrapper{} var _ txcmd.Wrapper = ChainWrapper{}
// Wrap will wrap the tx with a ChainTx from the standard flags // Wrap will wrap the tx with a ChainTx from the standard flags
func (ChainWrapper) Wrap(tx basecoin.Tx) (res basecoin.Tx, err error) { func (ChainWrapper) Wrap(tx basecoin.Tx) (res basecoin.Tx, err error) {

View File

@ -4,11 +4,9 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"github.com/spf13/viper" "github.com/spf13/viper"
"github.com/tendermint/basecoin"
"github.com/tendermint/basecoin/client/commands" "github.com/tendermint/basecoin/client/commands"
txcmd "github.com/tendermint/basecoin/client/commands/txs" txcmd "github.com/tendermint/basecoin/client/commands/txs"
"github.com/tendermint/basecoin"
bcmd "github.com/tendermint/basecoin/cmd/basecli/commands"
"github.com/tendermint/basecoin/modules/coin" "github.com/tendermint/basecoin/modules/coin"
) )
@ -47,7 +45,7 @@ func doSendTx(cmd *cobra.Command, args []string) error {
return err return err
} }
tx, err = bcmd.Middleware.Wrap(tx) tx, err = txcmd.Middleware.Wrap(tx)
if err != nil { if err != nil {
return err return err
} }
@ -57,7 +55,7 @@ func doSendTx(cmd *cobra.Command, args []string) error {
if err != nil { if err != nil {
return err return err
} }
if err = bcmd.ValidateResult(bres); err != nil { if err = txcmd.ValidateResult(bres); err != nil {
return err return err
} }
@ -67,7 +65,7 @@ func doSendTx(cmd *cobra.Command, args []string) error {
func readSendTxFlags() (tx basecoin.Tx, err error) { func readSendTxFlags() (tx basecoin.Tx, err error) {
// parse to address // parse to address
toAddr, err := bcmd.ParseAddress(viper.GetString(FlagTo)) toAddr, err := commands.ParseAddress(viper.GetString(FlagTo))
if err != nil { if err != nil {
return tx, err return tx, err
} }
@ -98,7 +96,7 @@ func readSendTxFlags() (tx basecoin.Tx, err error) {
func readFromAddr() (basecoin.Actor, error) { func readFromAddr() (basecoin.Actor, error) {
from := viper.GetString(FlagFrom) from := viper.GetString(FlagFrom)
if from == "" { if from == "" {
return bcmd.GetSignerAct(), nil return txcmd.GetSignerAct(), nil
} }
return bcmd.ParseAddress(from) return commands.ParseAddress(from)
} }

View File

@ -5,7 +5,8 @@ import (
"github.com/spf13/viper" "github.com/spf13/viper"
"github.com/tendermint/basecoin" "github.com/tendermint/basecoin"
bcmd "github.com/tendermint/basecoin/cmd/basecli/commands" "github.com/tendermint/basecoin/client/commands"
txcmd "github.com/tendermint/basecoin/client/commands/txs"
"github.com/tendermint/basecoin/modules/coin" "github.com/tendermint/basecoin/modules/coin"
"github.com/tendermint/basecoin/modules/fee" "github.com/tendermint/basecoin/modules/fee"
) )
@ -19,7 +20,7 @@ const (
// FeeWrapper wraps a tx with an optional fee payment // FeeWrapper wraps a tx with an optional fee payment
type FeeWrapper struct{} type FeeWrapper struct{}
var _ bcmd.Wrapper = FeeWrapper{} var _ txcmd.Wrapper = FeeWrapper{}
// Wrap checks for FlagFee and if present wraps the tx with a // Wrap checks for FlagFee and if present wraps the tx with a
// FeeTx of the given amount, paid by the signer // FeeTx of the given amount, paid by the signer
@ -52,7 +53,7 @@ func (FeeWrapper) Register(fs *pflag.FlagSet) {
func readPayer() (basecoin.Actor, error) { func readPayer() (basecoin.Actor, error) {
payer := viper.GetString(FlagPayer) payer := viper.GetString(FlagPayer)
if payer == "" { if payer == "" {
return bcmd.GetSignerAct(), nil return txcmd.GetSignerAct(), nil
} }
return bcmd.ParseAddress(payer) return commands.ParseAddress(payer)
} }

View File

@ -8,7 +8,8 @@ import (
"github.com/spf13/viper" "github.com/spf13/viper"
"github.com/tendermint/basecoin" "github.com/tendermint/basecoin"
bcmd "github.com/tendermint/basecoin/cmd/basecli/commands" "github.com/tendermint/basecoin/client/commands"
txcmd "github.com/tendermint/basecoin/client/commands/txs"
"github.com/tendermint/basecoin/modules/nonce" "github.com/tendermint/basecoin/modules/nonce"
) )
@ -21,7 +22,7 @@ const (
// NonceWrapper wraps a tx with a nonce // NonceWrapper wraps a tx with a nonce
type NonceWrapper struct{} type NonceWrapper struct{}
var _ bcmd.Wrapper = NonceWrapper{} var _ txcmd.Wrapper = NonceWrapper{}
// Wrap grabs the sequence number from the flag and wraps // Wrap grabs the sequence number from the flag and wraps
// the tx with this nonce. Grabs the permission from the signer, // the tx with this nonce. Grabs the permission from the signer,
@ -49,7 +50,7 @@ func (NonceWrapper) Register(fs *pflag.FlagSet) {
func readNonceKey() ([]basecoin.Actor, error) { func readNonceKey() ([]basecoin.Actor, error) {
nonce := viper.GetString(FlagNonceKey) nonce := viper.GetString(FlagNonceKey)
if nonce == "" { if nonce == "" {
return []basecoin.Actor{bcmd.GetSignerAct()}, nil return []basecoin.Actor{txcmd.GetSignerAct()}, nil
} }
return parseActors(nonce) return parseActors(nonce)
} }
@ -57,7 +58,7 @@ func readNonceKey() ([]basecoin.Actor, error) {
func parseActors(key string) (signers []basecoin.Actor, err error) { func parseActors(key string) (signers []basecoin.Actor, err error) {
var act basecoin.Actor var act basecoin.Actor
for _, k := range strings.Split(key, ",") { for _, k := range strings.Split(key, ",") {
act, err = bcmd.ParseAddress(k) act, err = commands.ParseAddress(k)
if err != nil { if err != nil {
return return
} }