embeddedfs

package module
v0.0.0-...-8e57f6b Latest Latest
Warning

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

Go to latest
Published: Feb 9, 2021 License: Apache-2.0 Imports: 6 Imported by: 0

README

embeddedfs

Embed file system in the source code, and use the file system in memory.

The new “embed” package which allows you to embed a file contents as part of the Go application binary, in Go 1.16 release.

Please use "embed" to replace embeddedfs package.

Install

go get -u github.com/whiler/embeddedfs

Usage

quick start
demo.go
package main

import (
	"io/ioutil"
	"log"

	"github.com/whiler/embeddedfs"
)

func main() {
	var content = []byte("hello embeddedfs.")
	var fs embeddedfs.FileSystem = embeddedfs.EmbeddedFileSystem(map[string]*embeddedfs.EmbeddedFile{
		"/index": &embeddedfs.EmbeddedFile{
			Info: &embeddedfs.FileInfo{
				RawName: "index",
				RawSize: int64(len(content)),
			},
			Content: content,
		},
	})

	file, err := fs.Open("/index")
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close()

	bs, err := ioutil.ReadAll(file)
	if err != nil {
		log.Fatal(err)
	}
	log.Printf("content: %s\n", string(bs))
}
use embeddedfs.EmbeddedFileSystem as http.FileSystem
var fs embeddedfs.FileSystem = embeddedfs.EmbeddedFileSystem(map[string]*embeddedfs.EmbeddedFile{})
http.ListenAndServe(":8080", http.FileServer(fs))
generate embeddedfs.EmbeddedFileSystem from local file system
install embeddedfs command
go install github.com/whiler/embeddedfs/cmd/embeddedfs
generate embeddedfs.EmbeddedFileSystem
${GOPATH}/bin/embeddedfs -name ImageFS -out resource/images.go -package resource -root ./images

embeddedfs.FileSystem

the embeddedfs.FileSystem is an interface.

type FileSystem interface {
	Open(name string) (http.File, error)
	Stat(name string) (os.FileInfo, error)
}
Operations
Operation Original embeddedfs.DefaultFileSystem embeddedfs.EmbeddedFileSystem
- var fs embeddedfs.FileSystem = &embeddedfs.DefaultFileSystem{} var fs embeddedfs.FileSystem = embeddedfs.EmbeddedFileSystem(...)
Open os.Open(...) fs.Open(...) fs.Open(...)
Stat os.Stat(...) fs.Stat(...) fs.Stat(...)

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidOffset = errors.New("invalid offset")
	ErrInvalidWhence = errors.New("invalid whence")
	ErrInvalidDir    = errors.New("invalid dir")
	ErrInvalidCount  = errors.New("invalid count")
)

Functions

This section is empty.

Types

type DefaultFileSystem

type DefaultFileSystem struct{}

func (DefaultFileSystem) Open

func (DefaultFileSystem) Open(name string) (http.File, error)

func (DefaultFileSystem) Stat

func (DefaultFileSystem) Stat(name string) (os.FileInfo, error)

func (DefaultFileSystem) Walk

type EmbeddedFile

type EmbeddedFile struct {
	Info     *FileInfo
	Content  []byte
	Children []*FileInfo
}

type EmbeddedFileSystem

type EmbeddedFileSystem map[string]*EmbeddedFile

func (EmbeddedFileSystem) Open

func (fs EmbeddedFileSystem) Open(name string) (http.File, error)

func (EmbeddedFileSystem) Stat

func (fs EmbeddedFileSystem) Stat(name string) (os.FileInfo, error)

func (EmbeddedFileSystem) Walk

func (fs EmbeddedFileSystem) Walk(root string, fn filepath.WalkFunc) (err error)

type FileInfo

type FileInfo struct {
	RawName    string
	RawSize    int64
	RawMode    os.FileMode
	RawModTime time.Time
}

func (*FileInfo) IsDir

func (i *FileInfo) IsDir() bool

func (*FileInfo) ModTime

func (i *FileInfo) ModTime() time.Time

func (*FileInfo) Mode

func (i *FileInfo) Mode() os.FileMode

func (*FileInfo) Name

func (i *FileInfo) Name() string

func (*FileInfo) Size

func (i *FileInfo) Size() int64

func (*FileInfo) Sys

func (i *FileInfo) Sys() interface{}

type FileSystem

type FileSystem interface {
	Open(name string) (http.File, error)
	Stat(name string) (os.FileInfo, error)
	Walk(root string, fn filepath.WalkFunc) error
}

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

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