github.com/ddfisher/etcdctl@v0.1.2-0.20130925194301-eab7435d452d/etcdctl.go (about) 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 "github.com/coreos/go-etcd/etcd" 7 "os" 8 ) 9 10 var ( 11 cluster = flag.String("C", "0.0.0.0:4001", "a list of machine addresses in the cluster") 12 client = etcd.NewClient() 13 ) 14 15 func main() { 16 flag.Parse() 17 18 args := flag.Args() 19 20 if len(args) == 0 { 21 os.Exit(1) 22 } 23 24 commandName := args[0] 25 26 command, ok := commands[commandName] 27 28 if !ok { 29 fmt.Println("wrong command provided") 30 os.Exit(MalformedEtcdctlArguments) 31 } 32 33 if len(args) > command.maxArgs || len(args) < command.minArgs { 34 fmt.Println("wrong arguments provided") 35 fmt.Println(command.usage) 36 os.Exit(MalformedEtcdctlArguments) 37 } 38 39 if !client.SyncCluster() { 40 fmt.Println("cannot sync with the given cluster") 41 os.Exit(FailedToConnectToHost) 42 } 43 44 err := command.f(args) 45 46 if err != nil { 47 fmt.Println(err) 48 os.Exit(ErrorFromEtcd) 49 } 50 }