|
@@ -0,0 +1,47 @@
|
|
|
+//go:build !go1.17
|
|
|
+// +build !go1.17
|
|
|
+
|
|
|
+// This code is taken from https://github.com/golang/go/blob/go1.17/src/io/fs/readdir.go#L49-L77
|
|
|
+// and provides the io/fs.FileInfoToDirEntry() utility for go1.16. Go 1.16 and up
|
|
|
+// provide a new implementation of ioutil.ReadDir() (in os.ReadDir()) that returns
|
|
|
+// an os.DirEntry instead of fs.FileInfo. go1.17 added the io/fs.FileInfoToDirEntry()
|
|
|
+// utility to allow existing uses of ReadDir() to get the old type. This utility
|
|
|
+// is not available in go1.16, so we copied it to assist the migration to os.ReadDir().
|
|
|
+
|
|
|
+// Copyright 2020 The Go Authors. All rights reserved.
|
|
|
+// Use of this source code is governed by a BSD-style
|
|
|
+// license that can be found in the LICENSE file.
|
|
|
+
|
|
|
+package plugins
|
|
|
+
|
|
|
+import "os"
|
|
|
+
|
|
|
+// dirInfo is a DirEntry based on a FileInfo.
|
|
|
+type dirInfo struct {
|
|
|
+ fileInfo os.FileInfo
|
|
|
+}
|
|
|
+
|
|
|
+func (di dirInfo) IsDir() bool {
|
|
|
+ return di.fileInfo.IsDir()
|
|
|
+}
|
|
|
+
|
|
|
+func (di dirInfo) Type() os.FileMode {
|
|
|
+ return di.fileInfo.Mode().Type()
|
|
|
+}
|
|
|
+
|
|
|
+func (di dirInfo) Info() (os.FileInfo, error) {
|
|
|
+ return di.fileInfo, nil
|
|
|
+}
|
|
|
+
|
|
|
+func (di dirInfo) Name() string {
|
|
|
+ return di.fileInfo.Name()
|
|
|
+}
|
|
|
+
|
|
|
+// fileInfoToDirEntry returns a DirEntry that returns information from info.
|
|
|
+// If info is nil, fileInfoToDirEntry returns nil.
|
|
|
+func fileInfoToDirEntry(info os.FileInfo) os.DirEntry {
|
|
|
+ if info == nil {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return dirInfo{fileInfo: info}
|
|
|
+}
|