genfs

package module
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 23, 2024 License: MIT Imports: 11 Imported by: 0

README

genfs

Go Reference

genfs is a feature-rich generator system that behaves like a filesystem. This package formed the foundation for bud.

Install

go get github.com/matthewmueller/genfs

Usage

fsys := genfs.New()
fsys.GenerateFile("a.txt", func(fsys genfs.FS, file *genfs.File) error {
  file.WriteString("a")
  return nil
})
code, _ := fs.ReadFile(fsys, "a.txt")
fmt.Println(string(code))
// Output: a

Contributors

License

MIT

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Dir

type Dir struct {
	// contains filtered or unexported fields
}

func (*Dir) DirGenerator

func (d *Dir) DirGenerator(reldir string, generator DirGenerator) error

func (*Dir) FileGenerator

func (d *Dir) FileGenerator(relpath string, generator FileGenerator) error

func (*Dir) GenerateDir

func (d *Dir) GenerateDir(reldir string, fn func(fsys FS, dir *Dir) error) error

func (*Dir) GenerateFile

func (d *Dir) GenerateFile(relpath string, fn func(fsys FS, file *File) error) error

func (*Dir) Mode

func (d *Dir) Mode() fs.FileMode

func (*Dir) Path

func (d *Dir) Path() string

func (*Dir) Relative

func (d *Dir) Relative() string

func (*Dir) Target

func (d *Dir) Target() string

type DirGenerator

type DirGenerator interface {
	GenerateDir(fsys FS, dir *Dir) error
}

type Embed

type Embed struct {
	Data []byte
}

func (*Embed) GenerateFile

func (e *Embed) GenerateFile(fsys FS, file *File) error

type FS

type FS fs.FS
Example
package main

import (
	"io/fs"
	"os"

	"github.com/matthewmueller/genfs"
	"github.com/matthewmueller/virt"
)

func main() {
	fsys := genfs.New(virt.Map{})
	fsys.GenerateFile("a.txt", func(fsys genfs.FS, file *genfs.File) error {
		file.WriteString("a")
		return nil
	})
	code, _ := fs.ReadFile(fsys, "a.txt")
	os.Stdout.Write(code)
}
Output:

a

type File

type File struct {
	// contains filtered or unexported fields
}

func (*File) Mode

func (f *File) Mode() fs.FileMode

func (*File) Path

func (f *File) Path() string

func (*File) Read

func (f *File) Read(p []byte) (n int, err error)

func (*File) Relative

func (f *File) Relative() string

func (*File) Target

func (f *File) Target() string

func (*File) Write

func (f *File) Write(p []byte) (n int, err error)

func (*File) WriteString

func (f *File) WriteString(s string) (n int, err error)

type FileGenerator

type FileGenerator interface {
	GenerateFile(fsys FS, file *File) error
}

type FileSystem

type FileSystem struct {
	// contains filtered or unexported fields
}

func New

func New(fsys fs.FS) *FileSystem

func (*FileSystem) DirGenerator

func (f *FileSystem) DirGenerator(reldir string, generator DirGenerator) error

func (*FileSystem) FileGenerator

func (f *FileSystem) FileGenerator(relpath string, generator FileGenerator) error

func (*FileSystem) GenerateDir

func (f *FileSystem) GenerateDir(reldir string, fn func(fsys FS, dir *Dir) error) error

func (*FileSystem) GenerateFile

func (f *FileSystem) GenerateFile(relpath string, fn func(fsys FS, file *File) error) error

func (*FileSystem) Open

func (f *FileSystem) Open(name string) (fs.File, error)

func (*FileSystem) ReadDir

func (f *FileSystem) ReadDir(name string) (des []fs.DirEntry, err error)

ReadDir reads the named directory. We implement ReadDir in addition to Open so that we can merge generated files with the fs.FS files that can later be read by Open.

type GeneratorFunc added in v0.0.2

type GeneratorFunc func(cache cache.Interface, target string) (*virt.File, error)

func (GeneratorFunc) Generate added in v0.0.2

func (fn GeneratorFunc) Generate(cache cache.Interface, target string) (*virt.File, error)

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL