debme
CategoryResource Embedding
SubcategoryResource Embedding
Stars0
Create an `embed.FS` from an existing `embed.FS` subdirectory
About debme
Features
- Get an
embed.FSfrom an embedded subdirectory - Handy
Copy(sourcePath, targetPath)method to copy an embedded file to the filesystem - 100%
embed.FScompatible - 100% code coverage
Example
package main
import (
"embed"
"github.com/leaanthony/debme"
"io/fs"
)
// Example Filesystem:
//
// fixtures/
// ├── test1
// | └── onefile.txt
// └── test2
// └── inner
// ├── deeper
// | └── three.txt
// ├── one.txt
// └── two.txt
//go:embed fixtures
var fixtures embed.FS
func main() {
root, _ := debme.FS(fixtures, "fixtures")
// Anchor to "fixtures/test1"
test1, _ := root.FS("test1")
files1, _ := test1.ReadDir(".")
println(len(files1)) // 1
println(files1[0].Name()) // "onefile.txt"
// Anchor to "fixtures/test2/inner"
inner, _ := root.FS("test2/inner")
one, _ := inner.ReadFile("one.txt")
println(string(one)) // "1"
// Fully compatible FS
fs.WalkDir(inner, ".", func(path string, d fs.DirEntry, err error) error {
if err != nil {
return err
}
println("Path:", path, " Name:", d.Name())
return nil
})
/*
Path: . Name: inner
Path: deeper Name: deeper
Path: deeper/three.txt Name: three.txt
Path: one.txt Name: one.txt
Path: two.txt Name: two.txt
*/
// Go deeper
deeper, _ := inner.FS("deeper")
deeperFiles, _ := deeper.ReadDir(".")
println(len(deeperFiles)) // 1
println(files1[0].Name()) // "three.txt"
// Copy files
err := deeper.Copy("three.txt", "/path/to/target.txt")
}
Why
Go's new embed functionality is awesome! The only thing I found a little frustrating was the need to manage base paths. This module was created out of the need to embed multiple templates in the Wails CLI.
Frequently Asked Questions
What is debme?
debme is a Resource Embedding library for the Go programming language. Create an `embed.FS` from an existing `embed.FS` subdirectory
How do I install debme?
Install debme with the Go module system using `go get leaanthony/debme`. Check the repository for the current installation instructions.
What category does debme belong to?
debme is listed under Resource Embedding, specifically Resource Embedding.