fix flag parsing -- use flagSet after the command
This commit is contained in:
parent
1d5a6065c5
commit
c6c465402e
13
cmd/main.go
13
cmd/main.go
|
@ -1,18 +1,15 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"flag"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
"github.com/tendermint/tendermint/config"
|
"github.com/tendermint/tendermint/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
// Parse config flags
|
args := os.Args[1:]
|
||||||
config.ParseFlags()
|
|
||||||
|
|
||||||
args := flag.Args()
|
|
||||||
if len(args) == 0 {
|
if len(args) == 0 {
|
||||||
fmt.Println(`Tendermint
|
fmt.Println(`Tendermint
|
||||||
|
|
||||||
|
@ -21,13 +18,13 @@ Commands:
|
||||||
gen_account Generate new account keypair
|
gen_account Generate new account keypair
|
||||||
gen_validator Generate new validator keypair
|
gen_validator Generate new validator keypair
|
||||||
probe_upnp Test UPnP functionality
|
probe_upnp Test UPnP functionality
|
||||||
|
`)
|
||||||
tendermint --help for command options`)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
switch args[0] {
|
switch args[0] {
|
||||||
case "daemon":
|
case "daemon":
|
||||||
|
config.ParseFlags(args[1:])
|
||||||
daemon()
|
daemon()
|
||||||
case "gen_account":
|
case "gen_account":
|
||||||
gen_account()
|
gen_account()
|
||||||
|
@ -35,5 +32,7 @@ tendermint --help for command options`)
|
||||||
gen_validator()
|
gen_validator()
|
||||||
case "probe_upnp":
|
case "probe_upnp":
|
||||||
probe_upnp()
|
probe_upnp()
|
||||||
|
default:
|
||||||
|
fmt.Println("Unknown command %v", args[0])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,16 +127,18 @@ func DataDir() string { return rootDir + "/data" }
|
||||||
|
|
||||||
var Config ConfigType
|
var Config ConfigType
|
||||||
|
|
||||||
func setFlags(printHelp *bool) {
|
func parseFlags(flags *flag.FlagSet, args []string) (printHelp bool) {
|
||||||
flag.BoolVar(printHelp, "help", false, "Print this help message.")
|
flags.BoolVar(&printHelp, "help", false, "Print this help message.")
|
||||||
flag.StringVar(&Config.LAddr, "laddr", Config.LAddr, "Listen address. (0.0.0.0:0 means any interface, any port)")
|
flags.StringVar(&Config.LAddr, "laddr", Config.LAddr, "Listen address. (0.0.0.0:0 means any interface, any port)")
|
||||||
flag.StringVar(&Config.SeedNode, "seed", Config.SeedNode, "Address of seed node")
|
flags.StringVar(&Config.SeedNode, "seed", Config.SeedNode, "Address of seed node")
|
||||||
|
flags.Parse(args)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func ParseFlags() {
|
func ParseFlags(args []string) {
|
||||||
configFile := ConfigFile()
|
configFile := ConfigFile()
|
||||||
|
|
||||||
// try to read configuration. if missing, write default
|
// try to read configuration from file. if missing, write default
|
||||||
configBytes, err := ioutil.ReadFile(configFile)
|
configBytes, err := ioutil.ReadFile(configFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
defaultConfig.write(configFile)
|
defaultConfig.write(configFile)
|
||||||
|
@ -157,11 +159,10 @@ func ParseFlags() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// try to parse arg flags, which can override file configuration.
|
// try to parse arg flags, which can override file configuration.
|
||||||
var printHelp bool
|
flags := flag.NewFlagSet("main", flag.ExitOnError)
|
||||||
setFlags(&printHelp)
|
printHelp := parseFlags(flags, args)
|
||||||
flag.Parse()
|
|
||||||
if printHelp {
|
if printHelp {
|
||||||
flag.PrintDefaults()
|
flags.PrintDefaults()
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue