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  }