binclude
cp $MOD_PATH go.mod
go build
exec ./main$exe
cmp stderr main.stderr

-- main.go --
package main

import (
	"io/ioutil"

	"github.com/lu4p/binclude"
)

func main() {
	binclude.Include("./assets")
	binclude.Include("file.txt")

	f, err := BinFS.Open("file.txt")
	if err != nil {
		panic(err)
	}

	out, err := ioutil.ReadAll(f)
	if err != nil {
		panic(err)
	}

	println(string(out))

	infos, err := BinFS.ReadDir("./assets")
	if err != nil {
		panic(err)
	}

	for _, info := range infos {
		println(info.Name())
	}
}

-- binclude.go --
// Code generated by binclude; DO NOT EDIT.

package main

import (
	"github.com/lu4p/binclude"
	"time"
)

var (
	_binclude0	= []byte("asset1")
	_binclude1	= []byte("subdirasset1")
	_binclude2	= []byte("subdirasset1")
	_binclude3	= []byte("file.txt")
	_binclude4	= []byte("asset1")
)
var BinFS = binclude.FileSystem{"assets/asset2.txt": {Filename: "asset2.txt", Mode: 420, ModTime: time.Unix(1592103958, 0), Content: _binclude0}, "assets/subdir": {Filename: "subdir", Mode: 2147484141, ModTime: time.Unix(1592104033, 0), Content: nil}, "assets/subdir/subdirasset1.txt": {Filename: "subdirasset1.txt", Mode: 420, ModTime: time.Unix(1592104027, 0), Content: _binclude1}, "assets/subdir/subdirasset2.txt": {Filename: "subdirasset2.txt", Mode: 420, ModTime: time.Unix(1592104033, 0), Content: _binclude2}, "file.txt": {Filename: "file.txt", Mode: 420, ModTime: time.Unix(1592104011, 0), Content: _binclude3}, "assets": {Filename: "assets", Mode: 2147484141, ModTime: time.Unix(1592518785, 0), Content: nil}, "assets/asset1.txt": {Filename: "asset1.txt", Mode: 420, ModTime: time.Unix(1592103949, 0), Content: _binclude4}}

-- assets/asset1.txt --
asset1

-- assets/asset2.txt --
asset2

-- subdir/subdirasset1.txt --
subdirasset1

-- subdir/subdirasset2.txt --
subdirasset2

-- file.txt --
file
-- main.stderr --
file

asset1.txt
asset2.txt