Browse Source

added use of Cobra CLI

squash
pull/419/head
rigelrozanski 7 years ago
parent
commit
569fd474c2
13 changed files with 246 additions and 169 deletions
  1. +27
    -0
      cmd/tendermint/commands/gen_validator.go
  2. +14
    -2
      cmd/tendermint/commands/init.go
  3. +14
    -2
      cmd/tendermint/commands/probe_upnp.go
  4. +40
    -0
      cmd/tendermint/commands/replay.go
  5. +23
    -4
      cmd/tendermint/commands/reset_priv_validator.go
  6. +76
    -0
      cmd/tendermint/commands/root.go
  7. +14
    -4
      cmd/tendermint/commands/run_node.go
  8. +14
    -2
      cmd/tendermint/commands/show_validator.go
  9. +21
    -0
      cmd/tendermint/commands/version.go
  10. +0
    -66
      cmd/tendermint/flags.go
  11. +0
    -15
      cmd/tendermint/gen_validator.go
  12. +0
    -7
      cmd/tendermint/log.go
  13. +3
    -67
      cmd/tendermint/main.go

+ 27
- 0
cmd/tendermint/commands/gen_validator.go View File

@ -0,0 +1,27 @@
package commands
import (
"fmt"
"github.com/spf13/cobra"
"github.com/tendermint/go-wire"
"github.com/tendermint/tendermint/types"
)
var genValidatorCmd = &cobra.Command{
Use: "gen_validator",
Short: "Generate new validator keypair",
Run: genValidator,
}
func init() {
RootCmd.AddCommand(genValidatorCmd)
}
func genValidator(cmd *cobra.Command, args []string) {
privValidator := types.GenPrivValidator()
privValidatorJSONBytes := wire.JSONBytesPretty(privValidator)
fmt.Printf(`%v
`, string(privValidatorJSONBytes))
}

cmd/tendermint/init.go → cmd/tendermint/commands/init.go View File


cmd/tendermint/probe_upnp.go → cmd/tendermint/commands/probe_upnp.go View File


+ 40
- 0
cmd/tendermint/commands/replay.go View File

@ -0,0 +1,40 @@
package commands
import (
"fmt"
"github.com/tendermint/tendermint/consensus"
"github.com/spf13/cobra"
)
var replayCmd = &cobra.Command{
Use: "replay",
Short: "Replay messages from WAL",
Run: func(cmd *cobra.Command, args []string) {
if len(args) > 1 {
consensus.RunReplayFile(config, args[1], false)
} else {
fmt.Println("replay requires an argument (walfile)")
}
},
}
var replayConsoleCmd = &cobra.Command{
Use: "replay_console",
Short: "Replay messages from WAL in a console",
Run: func(cmd *cobra.Command, args []string) {
if len(args) > 1 {
consensus.RunReplayFile(config, args[1], true)
} else {
fmt.Println("replay_console requires an argument (walfile)")
}
},
}
func init() {
RootCmd.AddCommand(replayCmd)
RootCmd.AddCommand(replayConsoleCmd)
}

cmd/tendermint/reset_priv_validator.go → cmd/tendermint/commands/reset_priv_validator.go View File


+ 76
- 0
cmd/tendermint/commands/root.go View File

@ -0,0 +1,76 @@
package commands
import (
"github.com/spf13/cobra"
cfg "github.com/tendermint/go-config"
"github.com/tendermint/go-logger"
tmcfg "github.com/tendermint/tendermint/config/tendermint"
)
var config cfg.Config
var log = logger.New("module", "main")
//global flags
var (
printHelp bool
moniker string
nodeLaddr string
seeds string
fastSync bool
skipUPNP bool
rpcLaddr string
grpcLaddr string
logLevel string
proxyApp string
abciTransport string
pex bool
)
var RootCmd = &cobra.Command{
Use: "tendermint",
Short: "Tendermint Core (BFT Consensus) in Go",
}
func init() {
// Get configuration
config = tmcfg.GetConfig("")
/////////////////////
// parse flags
// configuration options
RootCmd.PersistentFlags().StringVar(&moniker, "moniker", config.GetString("moniker"), "Node Name")
RootCmd.PersistentFlags().StringVar(&nodeLaddr, "node_laddr", config.GetString("node_laddr"), "Node listen address. (0.0.0.0:0 means any interface, any port)")
RootCmd.PersistentFlags().StringVar(&seeds, "seeds", config.GetString("seeds"), "Comma delimited host:port seed nodes")
RootCmd.PersistentFlags().BoolVar(&fastSync, "fast_sync", config.GetBool("fast_sync"), "Fast blockchain syncing")
RootCmd.PersistentFlags().BoolVar(&skipUPNP, "skip_upnp", config.GetBool("skip_upnp"), "Skip UPNP configuration")
RootCmd.PersistentFlags().StringVar(&rpcLaddr, "rpc_laddr", config.GetString("rpc_laddr"), "RPC listen address. Port required")
RootCmd.PersistentFlags().StringVar(&grpcLaddr, "grpc_laddr", config.GetString("grpc_laddr"), "GRPC listen address (BroadcastTx only). Port required")
RootCmd.PersistentFlags().StringVar(&logLevel, "log_level", config.GetString("log_level"), "Log level")
RootCmd.PersistentFlags().StringVar(&proxyApp, "proxy_app", config.GetString("proxy_app"), "Proxy app address, or 'nilapp' or 'dummy' for local testing.")
RootCmd.PersistentFlags().StringVar(&abciTransport, "abci", config.GetString("abci"), "Specify abci transport (socket | grpc)")
// feature flags
RootCmd.PersistentFlags().BoolVar(&pex, "pex", config.GetBool("pex_reactor"), "Enable Peer-Exchange (dev feature)")
//------------------
// Merge parsed flag values onto config
config.Set("moniker", moniker)
config.Set("node_laddr", nodeLaddr)
config.Set("seeds", seeds)
config.Set("fast_sync", fastSync)
config.Set("skip_upnp", skipUPNP)
config.Set("rpc_laddr", rpcLaddr)
config.Set("grpc_laddr", grpcLaddr)
config.Set("log_level", logLevel)
config.Set("proxy_app", proxyApp)
config.Set("abci", abciTransport)
config.Set("pex_reactor", pex)
// set the log level
logger.SetLogLevel(config.GetString("log_level"))
}

cmd/tendermint/run_node.go → cmd/tendermint/commands/run_node.go View File


cmd/tendermint/show_validator.go → cmd/tendermint/commands/show_validator.go View File


+ 21
- 0
cmd/tendermint/commands/version.go View File

@ -0,0 +1,21 @@
package commands
import (
"fmt"
"github.com/spf13/cobra"
"github.com/tendermint/tendermint/version"
)
var versionCmd = &cobra.Command{
Use: "version",
Short: "Show version info",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println(version.Version)
},
}
func init() {
RootCmd.AddCommand(versionCmd)
}

+ 0
- 66
cmd/tendermint/flags.go View File

@ -1,66 +0,0 @@
package main
import (
flag "github.com/spf13/pflag"
"os"
cfg "github.com/tendermint/go-config"
)
func parseFlags(config cfg.Config, args []string) {
var (
printHelp bool
moniker string
nodeLaddr string
seeds string
fastSync bool
skipUPNP bool
rpcLaddr string
grpcLaddr string
logLevel string
proxyApp string
abciTransport string
pex bool
)
// Declare flags
var flags = flag.NewFlagSet("main", flag.ExitOnError)
flags.BoolVar(&printHelp, "help", false, "Print this help message.")
// configuration options
flags.StringVar(&moniker, "moniker", config.GetString("moniker"), "Node Name")
flags.StringVar(&nodeLaddr, "node_laddr", config.GetString("node_laddr"), "Node listen address. (0.0.0.0:0 means any interface, any port)")
flags.StringVar(&seeds, "seeds", config.GetString("seeds"), "Comma delimited host:port seed nodes")
flags.BoolVar(&fastSync, "fast_sync", config.GetBool("fast_sync"), "Fast blockchain syncing")
flags.BoolVar(&skipUPNP, "skip_upnp", config.GetBool("skip_upnp"), "Skip UPNP configuration")
flags.StringVar(&rpcLaddr, "rpc_laddr", config.GetString("rpc_laddr"), "RPC listen address. Port required")
flags.StringVar(&grpcLaddr, "grpc_laddr", config.GetString("grpc_laddr"), "GRPC listen address (BroadcastTx only). Port required")
flags.StringVar(&logLevel, "log_level", config.GetString("log_level"), "Log level")
flags.StringVar(&proxyApp, "proxy_app", config.GetString("proxy_app"),
"Proxy app address, or 'nilapp' or 'dummy' for local testing.")
flags.StringVar(&abciTransport, "abci", config.GetString("abci"), "Specify abci transport (socket | grpc)")
// feature flags
flags.BoolVar(&pex, "pex", config.GetBool("pex_reactor"), "Enable Peer-Exchange (dev feature)")
flags.Parse(args)
if printHelp {
flags.PrintDefaults()
os.Exit(0)
}
// Merge parsed flag values onto app.
config.Set("moniker", moniker)
config.Set("node_laddr", nodeLaddr)
config.Set("seeds", seeds)
config.Set("fast_sync", fastSync)
config.Set("skip_upnp", skipUPNP)
config.Set("rpc_laddr", rpcLaddr)
config.Set("grpc_laddr", grpcLaddr)
config.Set("log_level", logLevel)
config.Set("proxy_app", proxyApp)
config.Set("abci", abciTransport)
config.Set("pex_reactor", pex)
}

+ 0
- 15
cmd/tendermint/gen_validator.go View File

@ -1,15 +0,0 @@
package main
import (
"fmt"
"github.com/tendermint/go-wire"
"github.com/tendermint/tendermint/types"
)
func gen_validator() {
privValidator := types.GenPrivValidator()
privValidatorJSONBytes := wire.JSONBytesPretty(privValidator)
fmt.Printf(`%v
`, string(privValidatorJSONBytes))
}

+ 0
- 7
cmd/tendermint/log.go View File

@ -1,7 +0,0 @@
package main
import (
"github.com/tendermint/go-logger"
)
var log = logger.New("module", "main")

+ 3
- 67
cmd/tendermint/main.go View File

@ -4,76 +4,12 @@ import (
"fmt"
"os"
cfg "github.com/tendermint/go-config"
"github.com/tendermint/go-logger"
tmcfg "github.com/tendermint/tendermint/config/tendermint"
"github.com/tendermint/tendermint/consensus"
"github.com/tendermint/tendermint/version"
cmd "github.com/tendermint/tendermint/cmd/tendermint/commands"
)
var config cfg.Config
func main() {
args := os.Args[1:]
if len(args) == 0 {
fmt.Println(`Tendermint
Commands:
init Initialize tendermint
node Run the tendermint node
show_validator Show this node's validator info
gen_validator Generate new validator keypair
probe_upnp Test UPnP functionality
replay <walfile> Replay messages from WAL
replay_console <walfile> Replay messages from WAL in a console
unsafe_reset_all (unsafe) Remove all the data and WAL, reset this node's validator
unsafe_reset_priv_validator (unsafe) Reset this node's validator
version Show version info
`)
return
}
// Get configuration
config = tmcfg.GetConfig("")
parseFlags(config, args[1:]) // Command line overrides
// set the log level
logger.SetLogLevel(config.GetString("log_level"))
switch args[0] {
case "node":
run_node(config)
case "replay":
if len(args) > 1 {
consensus.RunReplayFile(config, args[1], false)
} else {
fmt.Println("replay requires an argument (walfile)")
os.Exit(1)
}
case "replay_console":
if len(args) > 1 {
consensus.RunReplayFile(config, args[1], true)
} else {
fmt.Println("replay_console requires an argument (walfile)")
os.Exit(1)
}
case "init":
init_files()
case "show_validator":
show_validator()
case "gen_validator":
gen_validator()
case "probe_upnp":
probe_upnp()
case "unsafe_reset_all":
reset_all()
case "unsafe_reset_priv_validator":
reset_priv_validator()
case "version":
fmt.Println(version.Version)
default:
fmt.Printf("Unknown command %v\n", args[0])
if err := cmd.RootCmd.Execute(); err != nil {
fmt.Println(err)
os.Exit(1)
}
}

Loading…
Cancel
Save