summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/GeertJohan/go.rice/rice/embed-syso.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/GeertJohan/go.rice/rice/embed-syso.go')
-rw-r--r--vendor/github.com/GeertJohan/go.rice/rice/embed-syso.go204
1 files changed, 0 insertions, 204 deletions
diff --git a/vendor/github.com/GeertJohan/go.rice/rice/embed-syso.go b/vendor/github.com/GeertJohan/go.rice/rice/embed-syso.go
deleted file mode 100644
index beef3ea7..00000000
--- a/vendor/github.com/GeertJohan/go.rice/rice/embed-syso.go
+++ /dev/null
@@ -1,204 +0,0 @@
-package main
-
-import (
- "bytes"
- "encoding/gob"
- "fmt"
- "go/build"
- "io"
- "io/ioutil"
- "os"
- "path/filepath"
- "regexp"
- "strings"
- "text/template"
-
- "github.com/GeertJohan/go.rice/embedded"
- "github.com/akavel/rsrc/coff"
-)
-
-type sizedReader struct {
- *bytes.Reader
-}
-
-func (s sizedReader) Size() int64 {
- return int64(s.Len())
-}
-
-var tmplEmbeddedSysoHelper *template.Template
-
-func init() {
- var err error
- tmplEmbeddedSysoHelper, err = template.New("embeddedSysoHelper").Parse(`package {{.Package}}
-// ############# GENERATED CODE #####################
-// ## This file was generated by the rice tool.
-// ## Do not edit unless you know what you're doing.
-// ##################################################
-
-// extern char _bricebox_{{.Symname}}[], _ericebox_{{.Symname}};
-// int get_{{.Symname}}_length() {
-// return &_ericebox_{{.Symname}} - _bricebox_{{.Symname}};
-// }
-import "C"
-import (
- "bytes"
- "encoding/gob"
- "github.com/GeertJohan/go.rice/embedded"
- "unsafe"
-)
-
-func init() {
- ptr := unsafe.Pointer(&C._bricebox_{{.Symname}})
- bts := C.GoBytes(ptr, C.get_{{.Symname}}_length())
- embeddedBox := &embedded.EmbeddedBox{}
- err := gob.NewDecoder(bytes.NewReader(bts)).Decode(embeddedBox)
- if err != nil {
- panic("error decoding embedded box: "+err.Error())
- }
- embeddedBox.Link()
- embedded.RegisterEmbeddedBox(embeddedBox.Name, embeddedBox)
-}`)
- if err != nil {
- panic("could not parse template embeddedSysoHelper: " + err.Error())
- }
-}
-
-type embeddedSysoHelperData struct {
- Package string
- Symname string
-}
-
-func operationEmbedSyso(pkg *build.Package) {
-
- regexpSynameReplacer := regexp.MustCompile(`[^a-z0-9_]`)
-
- boxMap := findBoxes(pkg)
-
- // notify user when no calls to rice.FindBox are made (is this an error and therefore os.Exit(1) ?
- if len(boxMap) == 0 {
- fmt.Println("no calls to rice.FindBox() found")
- return
- }
-
- verbosef("\n")
-
- for boxname := range boxMap {
- // find path and filename for this box
- boxPath := filepath.Join(pkg.Dir, boxname)
- boxFilename := strings.Replace(boxname, "/", "-", -1)
- boxFilename = strings.Replace(boxFilename, "..", "back", -1)
- boxFilename = strings.Replace(boxFilename, ".", "-", -1)
-
- // verbose info
- verbosef("embedding box '%s'\n", boxname)
- verbosef("\tto file %s\n", boxFilename)
-
- // read box metadata
- boxInfo, ierr := os.Stat(boxPath)
- if ierr != nil {
- fmt.Printf("Error: unable to access box at %s\n", boxPath)
- os.Exit(1)
- }
-
- // create box datastructure (used by template)
- box := &embedded.EmbeddedBox{
- Name: boxname,
- Time: boxInfo.ModTime(),
- EmbedType: embedded.EmbedTypeSyso,
- Files: make(map[string]*embedded.EmbeddedFile),
- Dirs: make(map[string]*embedded.EmbeddedDir),
- }
-
- // fill box datastructure with file data
- filepath.Walk(boxPath, func(path string, info os.FileInfo, err error) error {
- if err != nil {
- fmt.Printf("error walking box: %s\n", err)
- os.Exit(1)
- }
-
- filename := strings.TrimPrefix(path, boxPath)
- filename = strings.Replace(filename, "\\", "/", -1)
- filename = strings.TrimPrefix(filename, "/")
- if info.IsDir() {
- embeddedDir := &embedded.EmbeddedDir{
- Filename: filename,
- DirModTime: info.ModTime(),
- }
- verbosef("\tincludes dir: '%s'\n", embeddedDir.Filename)
- box.Dirs[embeddedDir.Filename] = embeddedDir
-
- // add tree entry (skip for root, it'll create a recursion)
- if embeddedDir.Filename != "" {
- pathParts := strings.Split(embeddedDir.Filename, "/")
- parentDir := box.Dirs[strings.Join(pathParts[:len(pathParts)-1], "/")]
- parentDir.ChildDirs = append(parentDir.ChildDirs, embeddedDir)
- }
- } else {
- embeddedFile := &embedded.EmbeddedFile{
- Filename: filename,
- FileModTime: info.ModTime(),
- Content: "",
- }
- verbosef("\tincludes file: '%s'\n", embeddedFile.Filename)
- contentBytes, err := ioutil.ReadFile(path)
- if err != nil {
- fmt.Printf("error reading file content while walking box: %s\n", err)
- os.Exit(1)
- }
- embeddedFile.Content = string(contentBytes)
- box.Files[embeddedFile.Filename] = embeddedFile
- }
- return nil
- })
-
- // encode embedded box to gob file
- boxGobBuf := &bytes.Buffer{}
- err := gob.NewEncoder(boxGobBuf).Encode(box)
- if err != nil {
- fmt.Printf("error encoding box to gob: %v\n", err)
- os.Exit(1)
- }
-
- verbosef("gob-encoded embeddedBox is %d bytes large\n", boxGobBuf.Len())
-
- // write coff
- symname := regexpSynameReplacer.ReplaceAllString(boxname, "_")
- createCoffSyso(boxname, symname, "386", boxGobBuf.Bytes())
- createCoffSyso(boxname, symname, "amd64", boxGobBuf.Bytes())
-
- // write go
- sysoHelperData := embeddedSysoHelperData{
- Package: pkg.Name,
- Symname: symname,
- }
- fileSysoHelper, err := os.Create(boxFilename + ".rice-box.go")
- if err != nil {
- fmt.Printf("error creating syso helper: %v\n", err)
- os.Exit(1)
- }
- err = tmplEmbeddedSysoHelper.Execute(fileSysoHelper, sysoHelperData)
- if err != nil {
- fmt.Printf("error executing tmplEmbeddedSysoHelper: %v\n", err)
- os.Exit(1)
- }
- }
-}
-
-func createCoffSyso(boxFilename string, symname string, arch string, data []byte) {
- boxCoff := coff.NewRDATA()
- switch arch {
- case "386":
- case "amd64":
- boxCoff.FileHeader.Machine = 0x8664
- default:
- panic("invalid arch")
- }
- boxCoff.AddData("_bricebox_"+symname, sizedReader{bytes.NewReader(data)})
- boxCoff.AddData("_ericebox_"+symname, io.NewSectionReader(strings.NewReader("\000\000"), 0, 2)) // TODO: why? copied from rsrc, which copied it from as-generated
- boxCoff.Freeze()
- err := writeCoff(boxCoff, boxFilename+"_"+arch+".rice-box.syso")
- if err != nil {
- fmt.Printf("error writing %s coff/.syso: %v\n", arch, err)
- os.Exit(1)
- }
-}