From d16298ea4fc8bcbf16a023a6a9b9f3b48bb3e9e2 Mon Sep 17 00:00:00 2001 From: Dave Henderson Date: Thu, 7 Mar 2019 09:13:32 -0500 Subject: Replacing uses of blang/vfs with spf13/afero Signed-off-by: Dave Henderson --- env/env.go | 18 +++++++------- env/env_test.go | 76 ++++++++++++++++++++++++--------------------------------- 2 files changed, 41 insertions(+), 53 deletions(-) (limited to 'env') diff --git a/env/env.go b/env/env.go index 37941569..5b955479 100644 --- a/env/env.go +++ b/env/env.go @@ -5,7 +5,7 @@ import ( "os" "strings" - "github.com/blang/vfs" + "github.com/spf13/afero" ) // Getenv - retrieves the value of the environment variable named by the key. @@ -13,23 +13,23 @@ import ( // referenced file will be read into the value. // Otherwise the provided default (or an emptry string) is returned. func Getenv(key string, def ...string) string { - return GetenvVFS(vfs.OS(), key, def...) + return getenvVFS(afero.NewOsFs(), key, def...) } // ExpandEnv - like os.ExpandEnv, except supports `_FILE` vars as well func ExpandEnv(s string) string { - return expandEnvVFS(vfs.OS(), s) + return expandEnvVFS(afero.NewOsFs(), s) } // expandEnvVFS - -func expandEnvVFS(fs vfs.Filesystem, s string) string { +func expandEnvVFS(fs afero.Fs, s string) string { return os.Expand(s, func(s string) string { - return GetenvVFS(fs, s) + return getenvVFS(fs, s) }) } -// GetenvVFS - a convenience function intended for internal use only! -func GetenvVFS(fs vfs.Filesystem, key string, def ...string) string { +// getenvVFS - a convenience function intended for internal use only! +func getenvVFS(fs afero.Fs, key string, def ...string) string { val := getenvFile(fs, key) if val == "" && len(def) > 0 { return def[0] @@ -38,7 +38,7 @@ func GetenvVFS(fs vfs.Filesystem, key string, def ...string) string { return val } -func getenvFile(fs vfs.Filesystem, key string) string { +func getenvFile(fs afero.Fs, key string) string { val := os.Getenv(key) if val != "" { return val @@ -56,7 +56,7 @@ func getenvFile(fs vfs.Filesystem, key string) string { return "" } -func readFile(fs vfs.Filesystem, p string) (string, error) { +func readFile(fs afero.Fs, p string) (string, error) { f, err := fs.OpenFile(p, os.O_RDONLY, 0) if err != nil { return "", err diff --git a/env/env_test.go b/env/env_test.go index a00e77ce..0ed5f593 100644 --- a/env/env_test.go +++ b/env/env_test.go @@ -5,8 +5,8 @@ import ( "os" "testing" - "github.com/blang/vfs" - "github.com/blang/vfs/memfs" + "github.com/spf13/afero" + "github.com/stretchr/testify/assert" ) @@ -17,22 +17,22 @@ func TestGetenv(t *testing.T) { } func TestGetenvFile(t *testing.T) { - fs := newMemFS() + fs := afero.NewMemMapFs() _ = fs.Mkdir("/tmp", 0777) - f, _ := vfs.Create(fs, "/tmp/foo") + f, _ := fs.Create("/tmp/foo") _, _ = f.Write([]byte("foo")) defer os.Unsetenv("FOO_FILE") os.Setenv("FOO_FILE", "/tmp/foo") - assert.Equal(t, "foo", GetenvVFS(fs, "FOO", "bar")) + assert.Equal(t, "foo", getenvVFS(fs, "FOO", "bar")) os.Setenv("FOO_FILE", "/tmp/missing") - assert.Equal(t, "bar", GetenvVFS(fs, "FOO", "bar")) + assert.Equal(t, "bar", getenvVFS(fs, "FOO", "bar")) - _, _ = vfs.Create(fs, "/tmp/unreadable") - fs = WriteOnly(fs) + _, _ = fs.Create("/tmp/unreadable") + fs = writeOnly(fs) os.Setenv("FOO_FILE", "/tmp/unreadable") - assert.Equal(t, "bar", GetenvVFS(fs, "FOO", "bar")) + assert.Equal(t, "bar", getenvVFS(fs, "FOO", "bar")) } func TestExpandEnv(t *testing.T) { @@ -44,9 +44,9 @@ func TestExpandEnv(t *testing.T) { } func TestExpandEnvFile(t *testing.T) { - fs := newMemFS() + fs := afero.NewMemMapFs() _ = fs.Mkdir("/tmp", 0777) - f, _ := vfs.Create(fs, "/tmp/foo") + f, _ := fs.Create("/tmp/foo") _, _ = f.Write([]byte("foo")) defer os.Unsetenv("FOO_FILE") @@ -56,68 +56,56 @@ func TestExpandEnvFile(t *testing.T) { os.Setenv("FOO_FILE", "/tmp/missing") assert.Equal(t, "empty", expandEnvVFS(fs, "${FOO}empty")) - _, _ = vfs.Create(fs, "/tmp/unreadable") - fs = WriteOnly(fs) + _, _ = fs.Create("/tmp/unreadable") + fs = writeOnly(fs) os.Setenv("FOO_FILE", "/tmp/unreadable") assert.Equal(t, "", expandEnvVFS(fs, "${FOO}")) } // Maybe extract this into a separate package sometime... -// WriteOnly - represents a filesystem that's writeable, but read operations fail -func WriteOnly(fs vfs.Filesystem) vfs.Filesystem { - return &WoFS{fs} -} - -func newMemFS() vfs.Filesystem { - return memfs.Create() +// writeOnly - represents a filesystem that's writeable, but read operations fail +func writeOnly(fs afero.Fs) afero.Fs { + return &woFS{fs} } -type WoFS struct { - vfs.Filesystem +type woFS struct { + afero.Fs } -func (fs WoFS) Remove(name string) error { - return fs.Filesystem.Remove(name) +func (fs woFS) Remove(name string) error { + return fs.Fs.Remove(name) } -func (fs WoFS) Rename(oldpath, newpath string) error { - return fs.Filesystem.Rename(oldpath, newpath) +func (fs woFS) Rename(oldpath, newpath string) error { + return fs.Fs.Rename(oldpath, newpath) } -func (fs WoFS) Mkdir(name string, perm os.FileMode) error { - return fs.Filesystem.Mkdir(name, perm) +func (fs woFS) Mkdir(name string, perm os.FileMode) error { + return fs.Fs.Mkdir(name, perm) } -func (fs WoFS) OpenFile(name string, flag int, perm os.FileMode) (vfs.File, error) { - f, err := fs.Filesystem.OpenFile(name, flag, perm) +func (fs woFS) OpenFile(name string, flag int, perm os.FileMode) (afero.File, error) { + f, err := fs.Fs.OpenFile(name, flag, perm) if err != nil { - return WriteOnlyFile(f), err + return writeOnlyFile(f), err } - return WriteOnlyFile(f), nil -} - -func (fs WoFS) Lstat(name string) (os.FileInfo, error) { - return fs.Filesystem.Lstat(name) -} - -func (fs WoFS) PathSeparator() uint8 { - return fs.Filesystem.PathSeparator() + return writeOnlyFile(f), nil } -func (fs WoFS) ReadDir(path string) ([]os.FileInfo, error) { +func (fs woFS) ReadDir(path string) ([]os.FileInfo, error) { return nil, ErrWriteOnly } -func (fs WoFS) Stat(name string) (os.FileInfo, error) { +func (fs woFS) Stat(name string) (os.FileInfo, error) { return nil, ErrWriteOnly } -func WriteOnlyFile(f vfs.File) vfs.File { +func writeOnlyFile(f afero.File) afero.File { return &woFile{f} } type woFile struct { - vfs.File + afero.File } // Write is disabled and returns ErrWriteOnly -- cgit v1.2.3