diff --git a/pkg/fs/filesystem.go b/pkg/fs/filesystem.go index c7bc28597..3377b149d 100644 --- a/pkg/fs/filesystem.go +++ b/pkg/fs/filesystem.go @@ -16,6 +16,8 @@ package fs import ( "io/ioutil" + "os" + "path/filepath" kustfs "sigs.k8s.io/kustomize/api/filesys" ) @@ -31,6 +33,8 @@ type FileSystem interface { kustfs.FileSystem TempFile(string, string) (File, error) TempDir(string, string) (string, error) + Chmod(string, os.FileMode) error + Dir(string) string } // Fs is adaptor to TempFile @@ -52,3 +56,13 @@ func (dfs Fs) TempFile(tmpDir string, prefix string) (File, error) { func (dfs Fs) TempDir(rootDir string, prefix string) (string, error) { return ioutil.TempDir(rootDir, prefix) } + +// Chmod applies desired permissions on file +func (dfs Fs) Chmod(path string, mode os.FileMode) error { + return os.Chmod(path, mode) +} + +// Dir returns all but the last element of path, typically the path's directory +func (dfs Fs) Dir(path string) string { + return filepath.Dir(path) +} diff --git a/testutil/fs/fs.go b/testutil/fs/fs.go index 9a6f69052..3e10b2772 100644 --- a/testutil/fs/fs.go +++ b/testutil/fs/fs.go @@ -15,6 +15,8 @@ package fs import ( + "os" + kustfs "sigs.k8s.io/kustomize/api/filesys" "opendev.org/airship/airshipctl/pkg/fs" @@ -28,6 +30,8 @@ type MockFileSystem struct { MockTempDir func() (string, error) // allow to check content of the incoming parameters, root and patter for temp file MockTempFile func(string, string) (fs.File, error) + MockChmod func(string, os.FileMode) error + MockDir func(string) string kustfs.FileSystem } @@ -44,6 +48,16 @@ func (fsys MockFileSystem) TempDir(string, string) (string, error) { return fsys.MockTempDir() } +// Chmod Filesystem interface implementation +func (fsys MockFileSystem) Chmod(path string, mode os.FileMode) error { + return fsys.MockChmod(path, mode) +} + +// Dir Filesystem interface implementation +func (fsys MockFileSystem) Dir(path string) string { + return fsys.MockDir(path) +} + // TestFile implements file type TestFile struct { fs.File