func main() { ctx.LoadFromHome() setupLogging() app := os.Args[0] args := os.Args[1:] for _, arg := range args { if arg == "-v" || arg == "--version" { newArgs := make([]string, len(args)+1) newArgs[0] = "version" copy(newArgs[1:], args) args = newArgs break } if arg == "--generate-bash-completion" { for name := range commands { fmt.Println(name) } for _, cmd := range ctx.Aliases() { fmt.Println(cmd) } return } } c := cli.NewCLI(app, gafka.Version+"-"+gafka.BuildId+"-"+gafka.BuiltAt) c.Args = os.Args[1:] if len(os.Args) > 1 { // command given, convert alias if alias, present := ctx.Alias(os.Args[1]); present { cargs := make([]string, 0) cargs = append(cargs, strings.Split(alias, " ")...) if len(os.Args) > 2 { cargs = append(cargs, os.Args[2:]...) } c.Args = cargs } } c.Commands = commands c.HelpFunc = func(m map[string]cli.CommandFactory) string { var buf bytes.Buffer buf.WriteString(fmt.Sprintf("Unified multi-datacenter multi-cluster kafka swiss-knife management console\n\n")) buf.WriteString(cli.BasicHelpFunc(app)(m)) return buf.String() } exitCode, err := c.Run() if err != nil { fmt.Fprintf(os.Stderr, "%+v\n", err) os.Exit(1) } else if c.IsVersion() { os.Exit(0) } os.Exit(exitCode) }
func (this *Console) runCommand(cmdLine string) (ok bool) { ok = true parts := strings.Split(cmdLine, " ") for i := 0; i < len(parts); i++ { parts[i] = strings.TrimSpace(parts[i]) } cmd := parts[0] switch cmd { case "help", "h": this.doHelp() case "history": this.doHistory() default: args := parts if alias, present := ctx.Alias(cmd); present { aliasCmdParts := strings.Split(alias, " ") cmd = aliasCmdParts[0] args = make([]string, 0) args = append(args, aliasCmdParts...) if len(args) > 1 { args = append(args, parts[1:]...) } } if _, present := this.Cmds[cmd]; !present { this.Ui.Error(fmt.Sprintf("unknown command: %s", parts[0])) return } targetCmd, _ := this.Cmds[cmd]() targetCmd.Run(args[1:]) } return }
func main() { ctx.LoadFromHome() setupLogging() app := os.Args[0] args := os.Args[1:] for _, arg := range args { if arg == "-v" || arg == "--version" { newArgs := make([]string, len(args)+1) newArgs[0] = "version" copy(newArgs[1:], args) args = newArgs break } if arg == "--generate-bash-completion" { if len(args) > 1 { // contextual auto complete lastArg := args[len(args)-2] switch lastArg { case "-z": // zone for _, zone := range ctx.SortedZones() { fmt.Println(zone) } return case "-c": // cluster zone := ctx.ZkDefaultZone() for i := 0; i < len(args)-1; i++ { if args[i] == "-z" { zone = args[i+1] } } zkzone := zk.NewZkZone(zk.DefaultConfig(zone, ctx.ZoneZkAddrs(zone))) zkzone.ForSortedClusters(func(zkcluster *zk.ZkCluster) { fmt.Println(zkcluster.Name()) }) return case "-t": // topic zone := ctx.ZkDefaultZone() var cluster string for i := 0; i < len(args)-1; i++ { if args[i] == "-z" { zone = args[i+1] } if args[i] == "-c" { cluster = args[i+1] } } if cluster != "" { zkzone := zk.NewZkZone(zk.DefaultConfig(zone, ctx.ZoneZkAddrs(zone))) zkcluster := zkzone.NewCluster(cluster) topics, _ := zkcluster.Topics() for _, t := range topics { fmt.Println(t) } } return } } for name := range commands { fmt.Println(name) } for _, cmd := range ctx.Aliases() { fmt.Println(cmd) } return } } c := cli.NewCLI(app, gafka.Version+"-"+gafka.BuildId+"-"+gafka.BuiltAt) c.Args = os.Args[1:] if len(os.Args) > 1 { // command given, convert alias if alias, present := ctx.Alias(os.Args[1]); present { var cargs []string cargs = append(cargs, strings.Split(alias, " ")...) if len(os.Args) > 2 { cargs = append(cargs, os.Args[2:]...) } c.Args = cargs } } c.Commands = commands c.HelpFunc = func(m map[string]cli.CommandFactory) string { var buf bytes.Buffer buf.WriteString(fmt.Sprintf("Unified multi-datacenter multi-cluster kafka swiss-knife management console\n\n")) buf.WriteString(cli.BasicHelpFunc(app)(m)) return buf.String() } exitCode, err := c.Run() if err != nil { fmt.Fprintf(os.Stderr, "%+v\n", err) os.Exit(1) } else if c.IsVersion() { os.Exit(0) } os.Exit(exitCode) }
func main() { ctx.LoadFromHome() log.SetOutput(ioutil.Discard) log4go.AddFilter("stdout", log4go.INFO, log4go.NewConsoleLogWriter()) app := os.Args[0] args := os.Args[1:] for _, arg := range args { if arg == "-v" || arg == "--version" { newArgs := make([]string, len(args)+1) newArgs[0] = "version" copy(newArgs[1:], args) args = newArgs break } if arg == "--generate-bash-completion" { if len(args) > 1 { // contextual auto complete lastArg := args[len(args)-2] switch lastArg { case "-z": // zone for _, zone := range ctx.SortedZones() { fmt.Println(zone) } return } } for name, _ := range commands { fmt.Println(name) } return } } c := cli.NewCLI(app, gafka.Version+"-"+gafka.BuildId) c.Args = os.Args[1:] if len(os.Args) > 1 { // command given, convert alias if alias, present := ctx.Alias(os.Args[1]); present { var cargs []string cargs = append(cargs, strings.Split(alias, " ")...) if len(os.Args) > 2 { cargs = append(cargs, os.Args[2:]...) } c.Args = cargs } } c.Commands = commands c.HelpFunc = func(m map[string]cli.CommandFactory) string { var buf bytes.Buffer buf.WriteString(fmt.Sprintf("A CLI tool for Zookeeper\n\n")) buf.WriteString(cli.BasicHelpFunc(app)(m)) return buf.String() } exitCode, err := c.Run() if err != nil { fmt.Fprintf(os.Stderr, "%+v\n", err) os.Exit(1) } else if c.IsVersion() { os.Exit(0) } os.Exit(exitCode) }
func main() { ctx.LoadFromHome() setupLogging() app := os.Args[0] args := os.Args[1:] for _, arg := range args { if arg == "-v" || arg == "--version" { newArgs := make([]string, len(args)+1) newArgs[0] = "version" copy(newArgs[1:], args) args = newArgs break } if arg == "--generate-bash-completion" { if len(args) > 1 { // contextual auto complete lastArg := args[len(args)-2] switch lastArg { case "-z": // zone for _, zone := range ctx.SortedZones() { if ctx.Zone(zone).ZkHelix != "" { fmt.Println(zone) } } return case "-c": // cluster zone := ctx.ZkDefaultZone() for i := 0; i < len(args)-1; i++ { if args[i] == "-z" { zone = args[i+1] } } adm := zk.NewZkHelixAdmin(ctx.Zone(zone).ZkHelix) if err := adm.Connect(); err != nil { panic(err) } clusters, err := adm.Clusters() if err != nil { panic(err) } for _, cluster := range clusters { fmt.Println(cluster) } return } } for name := range commands { fmt.Println(name) } return } } c := cli.NewCLI(app, gafka.Version+"-"+gafka.BuildId+"-"+gafka.BuiltAt) c.Args = os.Args[1:] if len(os.Args) > 1 { // command given, convert alias if alias, present := ctx.Alias(os.Args[1]); present { var cargs []string cargs = append(cargs, strings.Split(alias, " ")...) if len(os.Args) > 2 { cargs = append(cargs, os.Args[2:]...) } c.Args = cargs } } c.Commands = commands c.HelpFunc = func(m map[string]cli.CommandFactory) string { var buf bytes.Buffer buf.WriteString(fmt.Sprintf("Helix administration console\n\n")) buf.WriteString(cli.BasicHelpFunc(app)(m)) return buf.String() } exitCode, err := c.Run() if err != nil { fmt.Fprintf(os.Stderr, "%+v\n", err) os.Exit(1) } else if c.IsVersion() { os.Exit(0) } os.Exit(exitCode) }