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  }