kaniko/vendor/github.com/otiai10/copy
Aaron Prindle a798fc930e
chore(deps): bump github.com/docker/docker from 25.0.4+incompatible to 26.0.0+incompatible (#3085)
2024-03-25 19:51:57 -07:00
..
.gitignore chore(deps): bump github.com/otiai10/copy from 1.7.0 to 1.11.0 (#2523) 2023-05-23 16:13:34 -07:00
LICENSE Optimize file copying and stage saving between stages. (#605) 2019-03-13 07:47:28 -07:00
README.md chore(deps): bump github.com/otiai10/copy from 1.12.0 to 1.14.0 (#2772) 2023-10-02 10:41:27 -07:00
copy.go chore(deps): bump github.com/otiai10/copy from 1.12.0 to 1.14.0 (#2772) 2023-10-02 10:41:27 -07:00
copy_namedpipes.go chore(deps): bump github.com/otiai10/copy from 1.7.0 to 1.11.0 (#2523) 2023-05-23 16:13:34 -07:00
copy_namedpipes_x.go chore(deps): bump github.com/otiai10/copy from 1.7.0 to 1.11.0 (#2523) 2023-05-23 16:13:34 -07:00
fileinfo_go1.15.go chore(deps): bump github.com/otiai10/copy from 1.7.0 to 1.11.0 (#2523) 2023-05-23 16:13:34 -07:00
fileinfo_go1.16.go chore(deps): bump github.com/otiai10/copy from 1.7.0 to 1.11.0 (#2523) 2023-05-23 16:13:34 -07:00
options.go chore(deps): bump github.com/otiai10/copy from 1.12.0 to 1.14.0 (#2772) 2023-10-02 10:41:27 -07:00
permission_control.go chore(deps): bump github.com/otiai10/copy from 1.7.0 to 1.11.0 (#2523) 2023-05-23 16:13:34 -07:00
preserve_ltimes.go chore(deps): bump github.com/otiai10/copy from 1.7.0 to 1.11.0 (#2523) 2023-05-23 16:13:34 -07:00
preserve_ltimes_x.go chore(deps): bump github.com/otiai10/copy from 1.7.0 to 1.11.0 (#2523) 2023-05-23 16:13:34 -07:00
preserve_owner.go chore(deps): bump github.com/otiai10/copy from 1.7.0 to 1.11.0 (#2523) 2023-05-23 16:13:34 -07:00
preserve_owner_x.go chore(deps): bump github.com/otiai10/copy from 1.7.0 to 1.11.0 (#2523) 2023-05-23 16:13:34 -07:00
preserve_times.go Bump deps (#1885) 2022-01-21 13:59:16 -05:00
stat_times.go chore(deps): bump github.com/otiai10/copy from 1.7.0 to 1.11.0 (#2523) 2023-05-23 16:13:34 -07:00
stat_times_darwin.go chore(deps): bump github.com/otiai10/copy from 1.7.0 to 1.11.0 (#2523) 2023-05-23 16:13:34 -07:00
stat_times_freebsd.go chore(deps): bump github.com/otiai10/copy from 1.7.0 to 1.11.0 (#2523) 2023-05-23 16:13:34 -07:00
stat_times_js.go chore(deps): bump github.com/otiai10/copy from 1.7.0 to 1.11.0 (#2523) 2023-05-23 16:13:34 -07:00
stat_times_windows.go chore(deps): bump github.com/otiai10/copy from 1.7.0 to 1.11.0 (#2523) 2023-05-23 16:13:34 -07:00
stat_times_x.go chore(deps): bump github.com/otiai10/copy from 1.7.0 to 1.11.0 (#2523) 2023-05-23 16:13:34 -07:00
test_setup.go chore(deps): bump github.com/otiai10/copy from 1.11.0 to 1.12.0 (#2598) 2023-06-25 20:58:22 -07:00
test_setup_x.go chore(deps): bump github.com/otiai10/copy from 1.11.0 to 1.12.0 (#2598) 2023-06-25 20:58:22 -07:00

README.md

copy

Go Reference Actions Status codecov License: MIT FOSSA Status CodeQL Go Report Card GitHub tag (latest SemVer) Docker Test Vagrant Test

copy copies directories recursively.

Example Usage

package main

import (
	"fmt"
	cp "github.com/otiai10/copy"
)

func main() {
	err := cp.Copy("your/src", "your/dest")
	fmt.Println(err) // nil
}

Advanced Usage

// Options specifies optional actions on copying.
type Options struct {

	// OnSymlink can specify what to do on symlink
	OnSymlink func(src string) SymlinkAction

	// OnDirExists can specify what to do when there is a directory already existing in destination.
	OnDirExists func(src, dest string) DirExistsAction

	// OnError can let users decide how to handle errors (e.g., you can suppress specific error).
	OnError func(src, dest, string, err error) error

	// Skip can specify which files should be skipped
	Skip func(srcinfo os.FileInfo, src, dest string) (bool, error)

	// PermissionControl can control permission of
	// every entry.
	// When you want to add permission 0222, do like
	//
	//		PermissionControl = AddPermission(0222)
	//
	// or if you even don't want to touch permission,
	//
	//		PermissionControl = DoNothing
	//
	// By default, PermissionControl = PreservePermission
	PermissionControl PermissionControlFunc

	// 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

	// Preserve the atime and the mtime of the entries
	// On linux we can preserve only up to 1 millisecond accuracy
	PreserveTimes bool

	// Preserve the uid and the gid of all entries.
	PreserveOwner bool

	// The byte size of the buffer to use for copying files.
	// If zero, the internal default buffer of 32KB is used.
	// See https://golang.org/pkg/io/#CopyBuffer for more information.
	CopyBufferSize uint

	// If you want to add some limitation on reading src file,
	// you can wrap the src and provide new reader,
	// such as `RateLimitReader` in the test case.
	WrapReader func(src io.Reader) io.Reader

	// If given, copy.Copy refers to this fs.FS instead of the OS filesystem.
	// e.g., You can use embed.FS to copy files from embedded filesystem.
	FS fs.FS

	// NumOfWorkers represents the number of workers used for
	// concurrent copying contents of directories.
	// If 0 or 1, it does not use goroutine for copying directories.
	// Please refer to https://pkg.go.dev/golang.org/x/sync/semaphore for more details.
	NumOfWorkers int64

	// PreferConcurrent is a function to determine whether or not
	// to use goroutine for copying contents of directories.
	// If PreferConcurrent is nil, which is default, it does concurrent
	// copying for all directories.
	// If NumOfWorkers is 0 or 1, this function will be ignored.
	PreferConcurrent func(srcdir, destdir string) (bool, error)
}
// For example...
opt := Options{
	Skip: func(info os.FileInfo, src, dest string) (bool, error) {
		return strings.HasSuffix(src, ".git"), nil
	},
}
err := Copy("your/directory", "your/directory.copy", opt)

Issues

License

FOSSA Status