mirror of
https://github.com/mudler/luet.git
synced 2025-09-10 19:49:06 +00:00
update vendor/
This commit is contained in:
11
vendor/github.com/otiai10/copy/.travis.yml
generated
vendored
11
vendor/github.com/otiai10/copy/.travis.yml
generated
vendored
@@ -1,11 +0,0 @@
|
|||||||
language: go
|
|
||||||
go:
|
|
||||||
- 1.9
|
|
||||||
- tip
|
|
||||||
before_script:
|
|
||||||
- go get -t ./...
|
|
||||||
script:
|
|
||||||
- go test ./... -v
|
|
||||||
- go test -race -coverprofile=coverage.txt -covermode=atomic
|
|
||||||
after_success:
|
|
||||||
- bash <(curl -s https://codecov.io/bash)
|
|
2
vendor/github.com/otiai10/copy/README.md
generated
vendored
2
vendor/github.com/otiai10/copy/README.md
generated
vendored
@@ -1,6 +1,6 @@
|
|||||||
# copy
|
# copy
|
||||||
|
|
||||||
[](https://travis-ci.org/otiai10/copy)
|
[](https://github.com/otiai10/copy/actions)
|
||||||
[](https://codecov.io/gh/otiai10/copy)
|
[](https://codecov.io/gh/otiai10/copy)
|
||||||
[](https://godoc.org/github.com/otiai10/copy)
|
[](https://godoc.org/github.com/otiai10/copy)
|
||||||
[](https://goreportcard.com/report/github.com/otiai10/copy)
|
[](https://goreportcard.com/report/github.com/otiai10/copy)
|
||||||
|
144
vendor/github.com/otiai10/copy/copy.go
generated
vendored
144
vendor/github.com/otiai10/copy/copy.go
generated
vendored
@@ -14,93 +14,177 @@ const (
|
|||||||
tmpPermissionForDirectory = os.FileMode(0755)
|
tmpPermissionForDirectory = os.FileMode(0755)
|
||||||
)
|
)
|
||||||
|
|
||||||
// Copy copies src to dest, doesn't matter if src is a directory or a file
|
// Copy copies src to dest, doesn't matter if src is a directory or a file.
|
||||||
func Copy(src, dest string) error {
|
func Copy(src, dest string, opt ...Options) error {
|
||||||
info, err := os.Lstat(src)
|
info, err := os.Lstat(src)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return copy(src, dest, info)
|
return switchboard(src, dest, info, assure(opt...))
|
||||||
}
|
}
|
||||||
|
|
||||||
// copy dispatches copy-funcs according to the mode.
|
// switchboard switches proper copy functions regarding file type, etc...
|
||||||
|
// If there would be anything else here, add a case to this switchboard.
|
||||||
|
func switchboard(src, dest string, info os.FileInfo, opt Options) error {
|
||||||
|
switch {
|
||||||
|
case info.Mode()&os.ModeSymlink != 0:
|
||||||
|
return onsymlink(src, dest, opt)
|
||||||
|
case info.IsDir():
|
||||||
|
return dcopy(src, dest, info, opt)
|
||||||
|
default:
|
||||||
|
return fcopy(src, dest, info, opt)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// copy decide if this src should be copied or not.
|
||||||
// Because this "copy" could be called recursively,
|
// Because this "copy" could be called recursively,
|
||||||
// "info" MUST be given here, NOT nil.
|
// "info" MUST be given here, NOT nil.
|
||||||
func copy(src, dest string, info os.FileInfo) error {
|
func copy(src, dest string, info os.FileInfo, opt Options) error {
|
||||||
if info.Mode()&os.ModeSymlink != 0 {
|
skip, err := opt.Skip(src)
|
||||||
return lcopy(src, dest, info)
|
if err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
if info.IsDir() {
|
if skip {
|
||||||
return dcopy(src, dest, info)
|
return nil
|
||||||
}
|
}
|
||||||
return fcopy(src, dest, info)
|
return switchboard(src, dest, info, opt)
|
||||||
}
|
}
|
||||||
|
|
||||||
// fcopy is for just a file,
|
// fcopy is for just a file,
|
||||||
// with considering existence of parent directory
|
// with considering existence of parent directory
|
||||||
// and file permission.
|
// and file permission.
|
||||||
func fcopy(src, dest string, info os.FileInfo) error {
|
func fcopy(src, dest string, info os.FileInfo, opt Options) (err error) {
|
||||||
|
|
||||||
if err := os.MkdirAll(filepath.Dir(dest), os.ModePerm); err != nil {
|
if err = os.MkdirAll(filepath.Dir(dest), os.ModePerm); err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
f, err := os.Create(dest)
|
f, err := os.Create(dest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
defer f.Close()
|
defer fclose(f, &err)
|
||||||
|
|
||||||
if err = os.Chmod(f.Name(), info.Mode()); err != nil {
|
if err = os.Chmod(f.Name(), info.Mode()|opt.AddPermission); err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
s, err := os.Open(src)
|
s, err := os.Open(src)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
defer s.Close()
|
defer fclose(s, &err)
|
||||||
|
|
||||||
_, err = io.Copy(f, s)
|
if _, err = io.Copy(f, s); err != nil {
|
||||||
return err
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if opt.Sync {
|
||||||
|
err = f.Sync()
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// dcopy is for a directory,
|
// dcopy is for a directory,
|
||||||
// with scanning contents inside the directory
|
// with scanning contents inside the directory
|
||||||
// and pass everything to "copy" recursively.
|
// and pass everything to "copy" recursively.
|
||||||
func dcopy(srcdir, destdir string, info os.FileInfo) error {
|
func dcopy(srcdir, destdir string, info os.FileInfo, opt Options) (err error) {
|
||||||
|
|
||||||
originalMode := info.Mode()
|
originalMode := info.Mode()
|
||||||
|
|
||||||
// Make dest dir with 0755 so that everything writable.
|
// Make dest dir with 0755 so that everything writable.
|
||||||
if err := os.MkdirAll(destdir, tmpPermissionForDirectory); err != nil {
|
if err = os.MkdirAll(destdir, tmpPermissionForDirectory); err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
// Recover dir mode with original one.
|
// Recover dir mode with original one.
|
||||||
defer os.Chmod(destdir, originalMode)
|
defer chmod(destdir, originalMode|opt.AddPermission, &err)
|
||||||
|
|
||||||
contents, err := ioutil.ReadDir(srcdir)
|
contents, err := ioutil.ReadDir(srcdir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, content := range contents {
|
for _, content := range contents {
|
||||||
cs, cd := filepath.Join(srcdir, content.Name()), filepath.Join(destdir, content.Name())
|
cs, cd := filepath.Join(srcdir, content.Name()), filepath.Join(destdir, content.Name())
|
||||||
if err := copy(cs, cd, content); err != nil {
|
|
||||||
|
if err = copy(cs, cd, content, opt); err != nil {
|
||||||
// If any error, exit immediately
|
// If any error, exit immediately
|
||||||
return err
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func onsymlink(src, dest string, opt Options) error {
|
||||||
|
|
||||||
|
switch opt.OnSymlink(src) {
|
||||||
|
case Shallow:
|
||||||
|
return lcopy(src, dest)
|
||||||
|
case Deep:
|
||||||
|
orig, err := filepath.EvalSymlinks(src)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
info, err := os.Lstat(orig)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return copy(orig, dest, info, opt)
|
||||||
|
case Skip:
|
||||||
|
fallthrough
|
||||||
|
default:
|
||||||
|
return nil // do nothing
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// lcopy is for a symlink,
|
// lcopy is for a symlink,
|
||||||
// with just creating a new symlink by replicating src symlink.
|
// with just creating a new symlink by replicating src symlink.
|
||||||
func lcopy(src, dest string, info os.FileInfo) error {
|
func lcopy(src, dest string) error {
|
||||||
src, err := os.Readlink(src)
|
src, err := os.Readlink(src)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Create the directories on the path to the dest symlink.
|
||||||
|
if err = os.MkdirAll(filepath.Dir(dest), os.ModePerm); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
return os.Symlink(src, dest)
|
return os.Symlink(src, dest)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fclose ANYHOW closes file,
|
||||||
|
// with asiging error raised during Close,
|
||||||
|
// BUT respecting the error already reported.
|
||||||
|
func fclose(f *os.File, reported *error) {
|
||||||
|
if err := f.Close(); *reported == nil {
|
||||||
|
*reported = err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// chmod ANYHOW changes file mode,
|
||||||
|
// with asiging error raised during Chmod,
|
||||||
|
// BUT respecting the error already reported.
|
||||||
|
func chmod(dir string, mode os.FileMode, reported *error) {
|
||||||
|
if err := os.Chmod(dir, mode); *reported == nil {
|
||||||
|
*reported = err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// assure Options struct, should be called only once.
|
||||||
|
// All optional values MUST NOT BE nil/zero after assured.
|
||||||
|
func assure(opts ...Options) Options {
|
||||||
|
if len(opts) == 0 {
|
||||||
|
return getDefaultOptions()
|
||||||
|
}
|
||||||
|
defopt := getDefaultOptions()
|
||||||
|
if opts[0].OnSymlink == nil {
|
||||||
|
opts[0].OnSymlink = defopt.OnSymlink
|
||||||
|
}
|
||||||
|
if opts[0].Skip == nil {
|
||||||
|
opts[0].Skip = defopt.Skip
|
||||||
|
}
|
||||||
|
return opts[0]
|
||||||
|
}
|
||||||
|
2
vendor/github.com/otiai10/copy/go.mod
generated
vendored
2
vendor/github.com/otiai10/copy/go.mod
generated
vendored
@@ -2,4 +2,4 @@ module github.com/otiai10/copy
|
|||||||
|
|
||||||
go 1.12
|
go 1.12
|
||||||
|
|
||||||
require github.com/otiai10/mint v1.3.0
|
require github.com/otiai10/mint v1.3.1
|
||||||
|
4
vendor/github.com/otiai10/copy/go.sum
generated
vendored
4
vendor/github.com/otiai10/copy/go.sum
generated
vendored
@@ -1,3 +1,5 @@
|
|||||||
github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE=
|
github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE=
|
||||||
github.com/otiai10/mint v1.3.0 h1:Ady6MKVezQwHBkGzLFbrsywyp09Ah7rkmfjV3Bcr5uc=
|
github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs=
|
||||||
github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo=
|
github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo=
|
||||||
|
github.com/otiai10/mint v1.3.1 h1:BCmzIS3n71sGfHB5NMNDB3lHYPz8fWSkCAErHed//qc=
|
||||||
|
github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc=
|
||||||
|
46
vendor/github.com/otiai10/copy/options.go
generated
vendored
Normal file
46
vendor/github.com/otiai10/copy/options.go
generated
vendored
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
package copy
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
|
// Options specifies optional actions on copying.
|
||||||
|
type Options struct {
|
||||||
|
// OnSymlink can specify what to do on symlink
|
||||||
|
OnSymlink func(src string) SymlinkAction
|
||||||
|
// Skip can specify which files should be skipped
|
||||||
|
Skip func(src string) (bool, error)
|
||||||
|
// AddPermission to every entities,
|
||||||
|
// NO MORE THAN 0777
|
||||||
|
AddPermission os.FileMode
|
||||||
|
// Sync file after copy.
|
||||||
|
// Useful in case when file must be on the disk
|
||||||
|
// (in case crash happens, for example),
|
||||||
|
// at the expense of some performance penalty
|
||||||
|
Sync bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// SymlinkAction represents what to do on symlink.
|
||||||
|
type SymlinkAction int
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Deep creates hard-copy of contents.
|
||||||
|
Deep SymlinkAction = iota
|
||||||
|
// Shallow creates new symlink to the dest of symlink.
|
||||||
|
Shallow
|
||||||
|
// Skip does nothing with symlink.
|
||||||
|
Skip
|
||||||
|
)
|
||||||
|
|
||||||
|
// getDefaultOptions provides default options,
|
||||||
|
// which would be modified by usage-side.
|
||||||
|
func getDefaultOptions() Options {
|
||||||
|
return Options{
|
||||||
|
OnSymlink: func(string) SymlinkAction {
|
||||||
|
return Shallow // Do shallow copy
|
||||||
|
},
|
||||||
|
Skip: func(string) (bool, error) {
|
||||||
|
return false, nil // Don't skip
|
||||||
|
},
|
||||||
|
AddPermission: 0, // Add nothing
|
||||||
|
Sync: false, // Do not sync
|
||||||
|
}
|
||||||
|
}
|
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
@@ -274,7 +274,7 @@ github.com/opencontainers/runc/libcontainer/system
|
|||||||
github.com/opencontainers/runc/libcontainer/user
|
github.com/opencontainers/runc/libcontainer/user
|
||||||
# github.com/opencontainers/runtime-spec v1.0.1
|
# github.com/opencontainers/runtime-spec v1.0.1
|
||||||
github.com/opencontainers/runtime-spec/specs-go
|
github.com/opencontainers/runtime-spec/specs-go
|
||||||
# github.com/otiai10/copy v1.0.2
|
# github.com/otiai10/copy v1.2.1-0.20200916181228-26f84a0b1578
|
||||||
github.com/otiai10/copy
|
github.com/otiai10/copy
|
||||||
# github.com/pelletier/go-toml v1.6.0
|
# github.com/pelletier/go-toml v1.6.0
|
||||||
github.com/pelletier/go-toml
|
github.com/pelletier/go-toml
|
||||||
|
Reference in New Issue
Block a user