-func configure(args []string) (*arvados.Cluster, logrus.FieldLogger, error) {
- prog := args[0]
- flags := flag.NewFlagSet(prog, flag.ContinueOnError)
-
- dumpConfig := flags.Bool("dump-config", false, "write current configuration to stdout and exit")
- getVersion := flags.Bool("version", false, "Print version information and exit.")
-
- initLogger := logrus.New()
- initLogger.Formatter = &logrus.JSONFormatter{
- TimestampFormat: rfc3339NanoFixed,
- }
- var logger logrus.FieldLogger = initLogger
-
- loader := config.NewLoader(os.Stdin, logger)
- loader.SetupFlags(flags)
- args = loader.MungeLegacyConfigArgs(logger, args[1:], "-legacy-keepproxy-config")
-
- if ok, code := cmd.ParseFlags(flags, prog, args, "", os.Stderr); !ok {
- os.Exit(code)
- } else if *getVersion {
- fmt.Printf("keepproxy %s\n", version)
- return nil, logger, nil
- }
-
- cfg, err := loader.Load()
- if err != nil {
- return nil, logger, err
- }
- cluster, err := cfg.GetCluster("")
- if err != nil {
- return nil, logger, err
- }
-
- logger = ctxlog.New(os.Stderr, cluster.SystemLogs.Format, cluster.SystemLogs.LogLevel).WithFields(logrus.Fields{
- "ClusterID": cluster.ClusterID,
- "PID": os.Getpid(),
- })
-
- if *dumpConfig {
- out, err := yaml.Marshal(cfg)
- if err != nil {
- return nil, logger, err
- }
- if _, err := os.Stdout.Write(out); err != nil {
- return nil, logger, err
- }
- return nil, logger, nil
- }