func NewSplitStrategy(logger logutil.Logger, argsStr string) (*SplitStrategy, error) { var args []string if argsStr != "" { args = strings.Split(argsStr, " ") } flagSet := flag.NewFlagSet("strategy", flag.ContinueOnError) flagSet.SetOutput(logutil.NewLoggerWriter(logger)) flagSet.Usage = func() { logger.Printf("Strategy flag has the following options:\n") flagSet.PrintDefaults() } populateBlpCheckpoint := flagSet.Bool("populate_blp_checkpoint", false, "populates the blp checkpoint table") dontStartBinlogPlayer := flagSet.Bool("dont_start_binlog_player", false, "do not start the binlog player after restore is complete") skipSetSourceShards := flagSet.Bool("skip_set_source_shards", false, "do not set the SourceShar field on destination shards") if err := flagSet.Parse(args); err != nil { return nil, fmt.Errorf("cannot parse strategy: %v", err) } if flagSet.NArg() > 0 { return nil, fmt.Errorf("strategy doesn't have positional arguments") } return &SplitStrategy{ PopulateBlpCheckpoint: *populateBlpCheckpoint, DontStartBinlogPlayer: *dontStartBinlogPlayer, SkipSetSourceShards: *skipSetSourceShards, }, nil }
func init() { logger := logutil.NewConsoleLogger() flag.CommandLine.SetOutput(logutil.NewLoggerWriter(logger)) flag.Usage = func() { logger.Printf("Usage: %s [global parameters] command [command parameters]\n", os.Args[0]) logger.Printf("\nThe global optional parameters are:\n") flag.PrintDefaults() logger.Printf("\nThe commands are listed below, sorted by group. Use '%s <command> -h' for more help.\n\n", os.Args[0]) vtctl.PrintAllCommands(logger) } }