package main import ( "fmt" "github.com/codegangsta/cli" "io/ioutil" "os" "strings" acm "github.com/tendermint/tendermint/account" "github.com/tendermint/tendermint/binary" btypes "github.com/tendermint/tendermint/cmd/barak/types" . "github.com/tendermint/tendermint/common" ) var ( remotes []string privKey acm.PrivKey remotesFlag = cli.StringFlag{ Name: "remotes", Value: "http://127.0.0.1:8082", Usage: "comma separated list of remote baraks", } privKeyFlag = cli.StringFlag{ Name: "privkey-file", Value: "privkey", Usage: "file containing private key json", } waitFlag = cli.BoolFlag{ Name: "wait", Usage: "whether to wait for termination", } inputFlag = cli.StringFlag{ Name: "input", Value: "", Usage: "input to the program (e.g. stdin)", } ) func main() { fmt.Printf("New Debora Process (PID: %d)\n", os.Getpid()) app := cli.NewApp() app.Name = "debora" app.Usage = "summons commands to barak" app.Version = "0.0.1" app.Email = "ethan@erisindustries.com,jae@tendermint.com" app.Flags = []cli.Flag{ remotesFlag, privKeyFlag, } app.Before = func(c *cli.Context) error { remotes, privKey = ParseFlags(c) return nil } app.Commands = []cli.Command{ cli.Command{ Name: "run", Usage: "run process", Action: cliRunProcess, Flags: []cli.Flag{ waitFlag, inputFlag, }, }, cli.Command{ Name: "stop", Usage: "stop process", Action: cliStopProcess, Flags: []cli.Flag{ //remotesFlag, //privKeyFlag, }, }, cli.Command{ Name: "list", Usage: "list processes", Action: cliListProcesses, Flags: []cli.Flag{ //remotesFlag, //privKeyFlag, }, }, } app.Run(os.Args) } func ParseFlags(c *cli.Context) (remotes []string, privKey acm.PrivKey) { remotesStr := c.String("remotes") remotes = strings.Split(remotesStr, ",") privkeyFile := c.String("privkey-file") privkeyJSONBytes, err := ioutil.ReadFile(privkeyFile) if err != nil { fmt.Printf("Failed to read privkey from file %v. %v", privkeyFile, err) return remotes, nil } binary.ReadJSON(&privKey, privkeyJSONBytes, &err) if err != nil { Exit(Fmt("Failed to parse privkey. %v", err)) } return remotes, privKey } func cliRunProcess(c *cli.Context) { args := c.Args() if len(args) < 2 { Exit("Must specify