diff --git a/cmd/buildkitd/config.go b/cmd/buildkitd/config.go deleted file mode 100644 index 1b09488c36e6..000000000000 --- a/cmd/buildkitd/config.go +++ /dev/null @@ -1,46 +0,0 @@ -package main - -import ( - "io" - "os" - "strconv" - "strings" - - "github.com/moby/buildkit/cmd/buildkitd/config" - "github.com/pelletier/go-toml" - "github.com/pkg/errors" -) - -func Load(r io.Reader) (config.Config, error) { - var c config.Config - t, err := toml.LoadReader(r) - if err != nil { - return c, errors.Wrap(err, "failed to parse config") - } - err = t.Unmarshal(&c) - if err != nil { - return c, errors.Wrap(err, "failed to parse config") - } - return c, nil -} - -func LoadFile(fp string) (config.Config, error) { - f, err := os.Open(fp) - if err != nil { - if errors.Is(err, os.ErrNotExist) { - return config.Config{}, nil - } - return config.Config{}, errors.Wrapf(err, "failed to load config from %s", fp) - } - defer f.Close() - return Load(f) -} - -// parseBoolOrAuto returns (nil, nil) if s is "auto" -func parseBoolOrAuto(s string) (*bool, error) { - if s == "" || strings.ToLower(s) == "auto" { - return nil, nil - } - b, err := strconv.ParseBool(s) - return &b, err -} diff --git a/cmd/buildkitd/config/load.go b/cmd/buildkitd/config/load.go new file mode 100644 index 000000000000..46e3dafb2474 --- /dev/null +++ b/cmd/buildkitd/config/load.go @@ -0,0 +1,36 @@ +package config + +import ( + "io" + "os" + + "github.com/pelletier/go-toml" + "github.com/pkg/errors" +) + +// Load loads buildkitd config +func Load(r io.Reader) (Config, error) { + var c Config + t, err := toml.LoadReader(r) + if err != nil { + return c, errors.Wrap(err, "failed to parse config") + } + err = t.Unmarshal(&c) + if err != nil { + return c, errors.Wrap(err, "failed to parse config") + } + return c, nil +} + +// LoadFile loads buildkitd config file +func LoadFile(fp string) (Config, error) { + f, err := os.Open(fp) + if err != nil { + if errors.Is(err, os.ErrNotExist) { + return Config{}, nil + } + return Config{}, errors.Wrapf(err, "failed to load config from %s", fp) + } + defer f.Close() + return Load(f) +} diff --git a/cmd/buildkitd/config_test.go b/cmd/buildkitd/config/load_test.go similarity index 98% rename from cmd/buildkitd/config_test.go rename to cmd/buildkitd/config/load_test.go index 81d79ab1c988..9e76e2621f8c 100644 --- a/cmd/buildkitd/config_test.go +++ b/cmd/buildkitd/config/load_test.go @@ -1,4 +1,4 @@ -package main +package config import ( "bytes" @@ -7,7 +7,7 @@ import ( "github.com/stretchr/testify/require" ) -func TestConfig(t *testing.T) { +func TestLoad(t *testing.T) { const testConfig = ` root = "/foo/bar" diff --git a/cmd/buildkitd/main.go b/cmd/buildkitd/main.go index e8d97b23aa91..e4e1bf738569 100644 --- a/cmd/buildkitd/main.go +++ b/cmd/buildkitd/main.go @@ -204,7 +204,7 @@ func main() { ctx, cancel := context.WithCancel(appcontext.Context()) defer cancel() - cfg, err := LoadFile(c.GlobalString("config")) + cfg, err := config.LoadFile(c.GlobalString("config")) if err != nil { return err } @@ -368,7 +368,7 @@ func defaultConfigPath() string { } func defaultConf() (config.Config, error) { - cfg, err := LoadFile(defaultConfigPath()) + cfg, err := config.LoadFile(defaultConfigPath()) if err != nil { var pe *os.PathError if !errors.As(err, &pe) { @@ -777,6 +777,15 @@ func getDNSConfig(cfg *config.DNSConfig) *oci.DNSConfig { return dns } +// parseBoolOrAuto returns (nil, nil) if s is "auto" +func parseBoolOrAuto(s string) (*bool, error) { + if s == "" || strings.ToLower(s) == "auto" { + return nil, nil + } + b, err := strconv.ParseBool(s) + return &b, err +} + func runTraceController(p string, exp sdktrace.SpanExporter) error { server := grpc.NewServer() tracev1.RegisterTraceServiceServer(server, &traceCollector{exporter: exp})