Add CLI commands as sub-package

This commit is contained in:
Ethan Frey 2017-08-06 22:51:07 +02:00
parent 464ea226f5
commit 6e38609e3f
3 changed files with 114 additions and 0 deletions

View File

@ -0,0 +1,44 @@
package commands
import (
"encoding/hex"
"github.com/spf13/cobra"
"github.com/spf13/viper"
cmn "github.com/tendermint/tmlibs/common"
"github.com/tendermint/basecoin/client/commands"
"github.com/tendermint/basecoin/client/commands/query"
"github.com/tendermint/basecoin/modules/etc"
"github.com/tendermint/basecoin/stack"
)
// EtcQueryCmd - command to query raw data
var EtcQueryCmd = &cobra.Command{
Use: "etc [key]",
Short: "Get data stored under key in etc",
RunE: commands.RequireInit(etcQueryCmd),
}
func etcQueryCmd(cmd *cobra.Command, args []string) error {
var res etc.Data
arg, err := commands.GetOneArg(args, "key")
if err != nil {
return err
}
key, err := hex.DecodeString(cmn.StripHex(arg))
if err != nil {
return err
}
key = stack.PrefixedKey(etc.Name, key)
prove := !viper.GetBool(commands.FlagTrustNode)
height, err := query.GetParsed(key, &res, prove)
if err != nil {
return err
}
return query.OutputProof(res, height)
}

View File

@ -0,0 +1,62 @@
package commands
import (
"github.com/spf13/cobra"
"github.com/tendermint/basecoin/client/commands"
"github.com/tendermint/basecoin/client/commands/txs"
"github.com/tendermint/basecoin/modules/etc"
)
// SetTxCmd is CLI command to set data
var SetTxCmd = &cobra.Command{
Use: "set",
Short: "Sets a key value pair",
RunE: commands.RequireInit(setTxCmd),
}
// RemoveTxCmd is CLI command to remove data
var RemoveTxCmd = &cobra.Command{
Use: "Remove",
Short: "Removes a key value pair",
RunE: commands.RequireInit(removeTxCmd),
}
//nolint
const (
FlagKey = "key"
FlagValue = "value"
)
func init() {
SetTxCmd.Flags().String(FlagKey, "", "Key to store data under (hex)")
SetTxCmd.Flags().String(FlagValue, "", "Data to store (hex)")
RemoveTxCmd.Flags().String(FlagKey, "", "Key under which to remove data (hex)")
}
// setTxCmd creates a SetTx, wraps, signs, and delivers it
func setTxCmd(cmd *cobra.Command, args []string) error {
key, err := commands.ParseHexFlag(FlagKey)
if err != nil {
return err
}
value, err := commands.ParseHexFlag(FlagValue)
if err != nil {
return err
}
tx := etc.NewSetTx(key, value)
return txs.DoTx(tx)
}
// removeTxCmd creates a RemoveTx, wraps, signs, and delivers it
func removeTxCmd(cmd *cobra.Command, args []string) error {
key, err := commands.ParseHexFlag(FlagKey)
if err != nil {
return err
}
tx := etc.NewRemoveTx(key)
return txs.DoTx(tx)
}

View File

@ -26,6 +26,10 @@ type SetTx struct {
Value data.Bytes `json:"value"`
}
func NewSetTx(key, value []byte) basecoin.Tx {
return SetTx{Key: key, Value: value}.Wrap()
}
// Wrap - fulfills TxInner interface
func (t SetTx) Wrap() basecoin.Tx {
return basecoin.Tx{t}
@ -44,6 +48,10 @@ type RemoveTx struct {
Key data.Bytes `json:"key"`
}
func NewRemoveTx(key []byte) basecoin.Tx {
return RemoveTx{Key: key}.Wrap()
}
// Wrap - fulfills TxInner interface
func (t RemoveTx) Wrap() basecoin.Tx {
return basecoin.Tx{t}