15003: Use config lib for arvados-server.
[arvados.git] / lib / config / cmd.go
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 package config
6
7 import (
8         "fmt"
9         "io"
10
11         "git.curoverse.com/arvados.git/lib/cmd"
12         "git.curoverse.com/arvados.git/sdk/go/ctxlog"
13         "github.com/ghodss/yaml"
14 )
15
16 var DumpCommand cmd.Handler = dumpCommand{}
17
18 type dumpCommand struct{}
19
20 func (dumpCommand) RunCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int {
21         var err error
22         defer func() {
23                 if err != nil {
24                         fmt.Fprintf(stderr, "%s\n", err)
25                 }
26         }()
27         if len(args) != 0 {
28                 err = fmt.Errorf("usage: %s <config-src.yaml >config-min.yaml", prog)
29                 return 2
30         }
31         log := ctxlog.New(stderr, "text", "info")
32         cfg, err := Load(stdin, log)
33         if err != nil {
34                 return 1
35         }
36         out, err := yaml.Marshal(cfg)
37         if err != nil {
38                 return 1
39         }
40         _, err = stdout.Write(out)
41         if err != nil {
42                 return 1
43         }
44         return 0
45 }