X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/29afa4d9270a8ca0ea7d9756589170b718135465..1ef0acd580ddf41ed67f34152eadad0e60413008:/lib/config/cmd.go diff --git a/lib/config/cmd.go b/lib/config/cmd.go index 41a1d7d214..528d748c86 100644 --- a/lib/config/cmd.go +++ b/lib/config/cmd.go @@ -6,18 +6,21 @@ package config import ( "bytes" + "errors" + "flag" "fmt" "io" - "io/ioutil" "os" "os/exec" - "git.curoverse.com/arvados.git/lib/cmd" - "git.curoverse.com/arvados.git/sdk/go/ctxlog" + "git.arvados.org/arvados.git/lib/cmd" + "git.arvados.org/arvados.git/sdk/go/arvados" + "git.arvados.org/arvados.git/sdk/go/ctxlog" "github.com/ghodss/yaml" + "github.com/sirupsen/logrus" ) -var DumpCommand cmd.Handler = dumpCommand{} +var DumpCommand dumpCommand type dumpCommand struct{} @@ -28,12 +31,19 @@ func (dumpCommand) RunCommand(prog string, args []string, stdin io.Reader, stdou fmt.Fprintf(stderr, "%s\n", err) } }() - if len(args) != 0 { - err = fmt.Errorf("usage: %s config-min.yaml", prog) - return 2 + + loader := &Loader{ + Stdin: stdin, + Logger: ctxlog.New(stderr, "text", "info"), } - log := ctxlog.New(stderr, "text", "info") - cfg, err := Load(stdin, log) + + flags := flag.NewFlagSet("", flag.ContinueOnError) + loader.SetupFlags(flags) + + if ok, code := cmd.ParseFlags(flags, prog, args, "", stderr); !ok { + return code + } + cfg, err := loader.Load() if err != nil { return 1 } @@ -48,34 +58,85 @@ func (dumpCommand) RunCommand(prog string, args []string, stdin io.Reader, stdou return 0 } -var CheckCommand cmd.Handler = checkCommand{} +var CheckCommand checkCommand type checkCommand struct{} func (checkCommand) RunCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int { var err error + var logbuf = &bytes.Buffer{} defer func() { + io.Copy(stderr, logbuf) if err != nil { fmt.Fprintf(stderr, "%s\n", err) } }() - if len(args) != 0 { - err = fmt.Errorf("usage: %s 0 { fmt.Fprintf(stderr, "Unexpected diff output:\n%s", diff) - return 1 + if *strict { + return 1 + } } else if err != nil { return 1 } - if log.used { - return 1 + if logbuf.Len() > 0 { + if *strict { + return 1 + } } return 0 } -type plainLogger struct { - w io.Writer - used bool -} +var DumpDefaultsCommand defaultsCommand + +type defaultsCommand struct{} -func (pl *plainLogger) Warnf(format string, args ...interface{}) { - pl.used = true - fmt.Fprintf(pl.w, format+"\n", args...) +func (defaultsCommand) RunCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int { + _, err := stdout.Write(DefaultYAML) + if err != nil { + fmt.Fprintln(stderr, err) + return 1 + } + return 0 }