AJ ONeal 27eee51fbe | ||
---|---|---|
fixtures | ||
internal/tools | ||
vendor | ||
.gitignore | ||
AUTHORS | ||
LICENSE | ||
README.md | ||
copy.go | ||
copy_test.go | ||
go.mod | ||
go.sum | ||
options.go | ||
vfs.go |
README.md
vfscopy
Recursively copy a Virtual FileSystem, such as http.FileSystem, to a native file system destination.
Works with any file system that implements http.FileSystem,
including vfsgen
, fileb0x
, gobindata
and most others.
Example: native file system (os)
httpfs := http.Dir("/tmp/public/")
vfs := vfscopy.NewVFS(httpfs)
if err := vfscopy.CopyAll(vfs, ".", "/tmp/dst/"); nil != err {
fmt.Fprintf(os.Stderr, "couldn't copy vfs: %v\n", err)
}
Example: vfsgen
Note: vfsgen
does not support symlinks or file permissions.
package main
import (
"fmt"
"git.rootprojects.org/root/vfscopy"
// vfsgen-generated file system
"git.example.com/org/project/assets"
)
func main() {
vfs := vfscopy.NewVFS(assets.Assets)
if err := vfscopy.CopyAll(vfs, ".", "/tmp/dst/"); nil != err {
fmt.Fprintf(os.Stderr, "couldn't copy vfs: %v\n", err)
}
fmt.Println("Done.")
}
Test
# Generate the test virtual file system
go generate ./...
# Run the tests
go test ./...
License
The MIT License (MIT)
We used the recursive native file system copy implementation at https://github.com/otiai10/copy as a starting point and added virtual file system support.