deb
github.com/leaanthony/debme
go get github.com/leaanthony/debme
deb

github.com/leaanthony/debme

embed.FS wrapper providing additional functionality

by Lea Anthony

v1.2.1 (see all)License:MIT
go get github.com/leaanthony/debme
Readme


embed.FS wrapper providing additional functionality

CodeFactor CodeFactor

Features

  • Get an embed.FS from an embedded subdirectory
  • Handy Copy(sourcePath, targetPath) method to copy an embedded file to the filesystem
  • 100% embed.FS compatible
  • 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.

GitHub Stars

11

LAST COMMIT

1yr ago

MAINTAINERS

0

CONTRIBUTORS

1

OPEN ISSUES

0

OPEN PRs

0
VersionTagPublished
v1.2.1
1yr ago
v1.0.1
1yr ago
v1.0.0
1yr ago
v1.1.2
1yr ago
No alternatives found
No tutorials found
Add a tutorial