Recursively copy Go virtual file systems, such as gobindata, vfsgen, and http.FileSystem.
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
AJ ONeal 86a1bd4bec
update examples section
pirms 3 gadiem
fixtures tested working (for proper implementations) pirms 3 gadiem
internal/tools tested working (for proper implementations) pirms 3 gadiem
vendor vendor deps for tests pirms 3 gadiem
.gitignore tested working (for proper implementations) pirms 3 gadiem
AUTHORS add LICENSE, AUTHORS, update README pirms 3 gadiem
LICENSE add LICENSE, AUTHORS, update README pirms 3 gadiem
README.md update examples section pirms 3 gadiem
copy.go rename Copy => CopyAll, update docs pirms 3 gadiem
copy_test.go rename Copy => CopyAll, update docs pirms 3 gadiem
go.mod tested working (for proper implementations) pirms 3 gadiem
go.sum tested working (for proper implementations) pirms 3 gadiem
options.go tested working (for proper implementations) pirms 3 gadiem
vfs.go tested working (for proper implementations) pirms 3 gadiem

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.

GoDoc

See https://pkg.go.dev/git.rootprojects.org/root/vfscopy.

Examples

(Native) File System

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)
}

vfsgen (http.FileSystem)

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.