github.com/gocaveman/caveman@v0.0.0-20191211162744-0ddf99dbdf6e/uiproto/files/files-gogen.go (about) 1 // +build ignore 2 3 package main 4 5 import ( 6 "io/ioutil" 7 "log" 8 "os" 9 "regexp" 10 "strings" 11 12 "github.com/shurcooL/vfsgen" 13 "github.com/spf13/afero" 14 ) 15 16 func main() { 17 18 packageName := "files" 19 20 wd, err := os.Getwd() 21 if err != nil { 22 log.Fatal(err) 23 } 24 base := afero.NewBasePathFs(afero.NewOsFs(), wd) 25 filteredAFS := afero.NewRegexpFs(base, regexp.MustCompile("\\.(gohtml|html|css|js|jpg|png|gif|svg)$")) 26 filteredHFS := afero.NewHttpFs(filteredAFS) 27 err = vfsgen.Generate(filteredHFS, vfsgen.Options{ 28 PackageName: packageName, 29 BuildTags: "!dev", 30 VariableName: "EmbeddedAssets", 31 Filename: "files-data.go", 32 }) 33 if err != nil { 34 log.Fatalln(err) 35 } 36 37 devContents := `// +build dev 38 39 package __PACKAGE__ 40 41 // CODE GENERATED FILE, DO NOT EDIT! 42 43 import ( 44 "net/http" 45 ) 46 47 // EmbeddedAssets dev version loads from local filesystem. 48 var EmbeddedAssets = func() http.FileSystem { 49 return http.Dir("__LOCALPATH__") 50 }() 51 ` 52 53 devStr := strings.Replace(string(devContents), "__PACKAGE__", packageName, -1) 54 devStr = strings.Replace(devStr, "__LOCALPATH__", wd, -1) 55 56 err = ioutil.WriteFile("files-data-dev.go", []byte(devStr), 0644) 57 if err != nil { 58 log.Fatal(err) 59 } 60 61 }