mirror of
				https://github.com/therootcompany/vfscopy
				synced 2025-11-04 07:12:49 +00:00 
			
		
		
		
	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.
GoDoc
See https://pkg.go.dev/git.rootprojects.org/root/vfscopy.
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.
					Languages
				
				
								
								
									Go
								
								100%