// Just our main function to kick things off in a loop. func realMain() int { args := os.Args[1:] for _, arg := range args { if arg == "-v" || arg == "-version" || arg == "--version" { newArgs := make([]string, len(args)+1) newArgs[0] = "version" copy(newArgs[1:], args) args = newArgs break } } cli := &cli.CLI{ Args: args, Commands: Commands, HelpFunc: cli.FilteredHelpFunc( CommandsInclude, cli.BasicHelpFunc("consul-snapshot")), HelpWriter: os.Stdout, } exitCode, err := cli.Run() if err != nil { log.Fatalf("Error executing CLI: %s", err.Error()) return 1 } return exitCode }
func RunCustom(args []string, commands map[string]cli.CommandFactory) int { // Get the command line args. We shortcut "--version" and "-v" to // just show the version. for _, arg := range args { if arg == "-v" || arg == "-version" || arg == "--version" { newArgs := make([]string, len(args)+1) newArgs[0] = "version" copy(newArgs[1:], args) args = newArgs break } } // Build the commands to include in the help now. This is pretty... // tedious, but we don't have a better way at the moment. commandsInclude := make([]string, 0, len(commands)) for k, _ := range commands { commandsInclude = append(commandsInclude, k) } cli := &cli.CLI{ Args: args, Commands: commands, HelpFunc: cli.FilteredHelpFunc(commandsInclude, HelpFunc), } exitCode, err := cli.Run() if err != nil { fmt.Fprintf(os.Stderr, "Error executing CLI: %s\n", err.Error()) return 1 } return exitCode }
func realMain(args []string, commands map[string]cli.CommandFactory) int { for _, arg := range args { if arg == "-v" || arg == "-version" || arg == "--version" { newArgs := make([]string, len(args)+1) newArgs[0] = "version" copy(newArgs[1:], args) args = newArgs break } } cmdNames := make([]string, 0, len(commands)) for cmdName := range commands { cmdNames = append(cmdNames, cmdName) } cli := &cli.CLI{ Args: args, Commands: commands, HelpFunc: cli.FilteredHelpFunc(cmdNames, cli.BasicHelpFunc("gypsy")), } exitCode, err := cli.Run() if err != nil { log.Warnf("Error executing CLI: %s", err.Error()) return 1 } return exitCode }
func wrappedMain() int { // Make sure we cleanup any plugins that were launched. defer plugin.CleanupClients() log.SetOutput(os.Stderr) log.Printf( "[INFO] Otto version: %s %s %s", Version, VersionPrerelease, GitCommit) // Setup signal handlers initSignalHandlers() // Load the configuration config := BuiltinConfig // Run checkpoint go runCheckpoint(&config) // Get the command line args. We shortcut "--version" and "-v" to // just show the version. args := os.Args[1:] for _, arg := range args { if arg == "-v" || arg == "-version" || arg == "--version" { newArgs := make([]string, len(args)+1) newArgs[0] = "version" copy(newArgs[1:], args) args = newArgs break } } cli := &cli.CLI{ Args: args, Commands: Commands, HelpFunc: cli.FilteredHelpFunc( CommandsInclude, cli.BasicHelpFunc("otto")), HelpWriter: os.Stdout, } exitCode, err := cli.Run() if err != nil { Ui.Error(fmt.Sprintf("Error executing CLI: %s", err.Error())) return 1 } return exitCode }
// excludeHelpFunc filters commands we don't want to show from the list of // commands displayed in packer's help text. func excludeHelpFunc(commands map[string]cli.CommandFactory, exclude []string) cli.HelpFunc { // Make search slice into a map so we can use use the `if found` idiom // instead of a nested loop. var excludes = make(map[string]interface{}, len(exclude)) for _, item := range exclude { excludes[item] = nil } // Create filtered list of commands helpCommands := []string{} for command := range commands { if _, found := excludes[command]; !found { helpCommands = append(helpCommands, command) } } return cli.FilteredHelpFunc(helpCommands, cli.BasicHelpFunc("packer")) }
func wrappedMain() int { log.SetOutput(os.Stderr) log.Printf("[INFO] KuuYee Otto version: %s %s %s", Version, VersionPrerelease, GitCommit) // 设置信号处理器 initSignalHandlers() // 载入配置 config := BuiltinConfig fmt.Printf("[KuuYee]====> config: %+v\n", config) // 运行检查点 go runCheckpoint(&config) // 获取命令行参数。通过"--version"和"-v"显示版本 args := os.Args[1:] for _, arg := range args { if arg == "-v" || arg == "-version" || arg == "--version" { newArgs := make([]string, len(args)+1) newArgs[0] = "version" copy(newArgs[1:], args) args = newArgs break } } cli := &cli.CLI{ Args: args, Commands: Commands, HelpFunc: cli.FilteredHelpFunc( CommandsInclude, cli.BasicHelpFunc("otto")), HelpWriter: os.Stdout, } exitCode, err := cli.Run() if err != nil { Ui.Error(fmt.Sprintf("Error executing CLI: %s", err.Error())) return 1 } return exitCode }
func RunCustom(args []string, commands map[string]cli.CommandFactory) int { // Get the command line args. We shortcut "--version" and "-v" to // just show the version. for _, arg := range args { if arg == "-v" || arg == "-version" || arg == "--version" { newArgs := make([]string, len(args)+1) newArgs[0] = "version" copy(newArgs[1:], args) args = newArgs break } } // Build the commands to include in the help now. commandsInclude := make([]string, 0, len(commands)) for k, _ := range commands { switch k { case "executor": case "syslog": case "fs ls", "fs cat", "fs stat": case "check": default: commandsInclude = append(commandsInclude, k) } } cli := &cli.CLI{ Args: args, Commands: commands, HelpFunc: cli.FilteredHelpFunc(commandsInclude, cli.BasicHelpFunc("nomad")), } exitCode, err := cli.Run() if err != nil { fmt.Fprintf(os.Stderr, "Error executing CLI: %s\n", err.Error()) return 1 } return exitCode }