From 4c97b91a04f72313d84ed88f082ff042c48d2ea0 Mon Sep 17 00:00:00 2001 From: Thomas Manville Date: Tue, 30 Jul 2019 10:31:27 -0700 Subject: [PATCH] Add envdir package (#6148) --- pkg/envdir/envdir.go | 34 ++++++++++++++++++++++++++++++++++ pkg/envdir/envdir_test.go | 27 +++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 pkg/envdir/envdir.go create mode 100644 pkg/envdir/envdir_test.go diff --git a/pkg/envdir/envdir.go b/pkg/envdir/envdir.go new file mode 100644 index 0000000000..0a81f78f56 --- /dev/null +++ b/pkg/envdir/envdir.go @@ -0,0 +1,34 @@ +package envdir + +import ( + "fmt" + "io/ioutil" + "os" + "path/filepath" + + "github.com/pkg/errors" +) + +func envDir(dir string) ([]string, error) { + fis, err := ioutil.ReadDir(dir) + if err != nil { + return nil, errors.Wrap(err, "failed to read env from dir:"+dir) + } + e := make([]string, 0, len(fis)) + for _, fi := range fis { + if fi.IsDir() { + continue + } + p := filepath.Join(dir, fi.Name()) + f, err := os.Open(p) + if err != nil { + return nil, errors.Wrap(err, "failed to read env from dir:"+dir) + } + c, err := ioutil.ReadAll(f) + if err != nil { + return nil, errors.Wrap(err, "failed to read env from dir:"+dir) + } + e = append(e, fmt.Sprintf("%s=%s", fi.Name(), c)) + } + return e, nil +} diff --git a/pkg/envdir/envdir_test.go b/pkg/envdir/envdir_test.go new file mode 100644 index 0000000000..9d5b2f6802 --- /dev/null +++ b/pkg/envdir/envdir_test.go @@ -0,0 +1,27 @@ +package envdir + +import ( + "io/ioutil" + "os" + "path/filepath" + "testing" + + . "gopkg.in/check.v1" +) + +// Hook up gocheck into the "go test" runner. +func Test(t *testing.T) { TestingT(t) } + +type EnvDirSuite struct{} + +var _ = Suite(&EnvDirSuite{}) + +func (s *EnvDirSuite) TestEnvDir(c *C) { + d := c.MkDir() + p := filepath.Join(d, "FOO") + err := ioutil.WriteFile(p, []byte("BAR"), os.ModePerm) + c.Assert(err, IsNil) + e, err := envDir(d) + c.Assert(err, IsNil) + c.Assert(e, DeepEquals, []string{"FOO=BAR"}) +}