mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #42797 from thaJeztah/go116_compat
pkg/plugins: fix compatibility with go1.16
This commit is contained in:
commit
94e00d09da
3 changed files with 56 additions and 2 deletions
|
@ -3,7 +3,6 @@ package plugins // import "github.com/docker/docker/pkg/plugins"
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/fs"
|
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
@ -41,7 +40,7 @@ func Scan() ([]string, error) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
entry = fs.FileInfoToDirEntry(fi)
|
entry = fileInfoToDirEntry(fi)
|
||||||
}
|
}
|
||||||
|
|
||||||
if entry.Type()&os.ModeSocket != 0 {
|
if entry.Type()&os.ModeSocket != 0 {
|
||||||
|
|
8
pkg/plugins/utils.go
Normal file
8
pkg/plugins/utils.go
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
//go:build go1.17
|
||||||
|
// +build go1.17
|
||||||
|
|
||||||
|
package plugins
|
||||||
|
|
||||||
|
import "io/fs"
|
||||||
|
|
||||||
|
var fileInfoToDirEntry = fs.FileInfoToDirEntry
|
47
pkg/plugins/utils_go1.16.go
Normal file
47
pkg/plugins/utils_go1.16.go
Normal file
|
@ -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}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue