Moved cmd/basecli/commands into client/commands
This commit is contained in:
parent
eb495e081b
commit
100522069d
|
@ -1,4 +1,4 @@
|
||||||
package commands
|
package auto
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
|
@ -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
|
||||||
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
|
@ -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
|
|
||||||
}
|
|
|
@ -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
|
|
||||||
}
|
|
|
@ -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"))
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue