urfave-cli/flag-gen/assets_generate.go
2019-08-04 20:44:15 +05:30

56 lines
1.0 KiB
Go

// +build ignore
package main
import (
"github.com/shurcooL/httpfs/union"
"github.com/shurcooL/vfsgen"
"log"
"net/http"
"os"
"time"
)
// zeroModTimeFileSystem is an http.FileSystem wrapper.
// It exposes a filesystem exactly like Source, except
// all file modification times are changed to zero.
// See https://github.com/shurcooL/vfsgen/pull/40#issuecomment-355416103
type zeroModTimeFileSystem struct {
Source http.FileSystem
}
func (fs zeroModTimeFileSystem) Open(name string) (http.File, error) {
f, err := fs.Source.Open(name)
return file{f}, err
}
type file struct {
http.File
}
func (f file) Stat() (os.FileInfo, error) {
fi, err := f.File.Stat()
return fileInfo{fi}, err
}
type fileInfo struct {
os.FileInfo
}
func (fi fileInfo) ModTime() time.Time { return time.Time{} }
func main() {
fs := zeroModTimeFileSystem{
Source: union.New(map[string]http.FileSystem{
"/templates": http.Dir("templates"),
"/source": http.Dir("source"),
}),
}
err := vfsgen.Generate(fs, vfsgen.Options{})
if err != nil {
log.Fatal(err)
}
}