12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- // This work is subject to the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
- // license. Its contents can be found at:
- // http://creativecommons.org/publicdomain/zero/1.0/
- package bindata
- import (
- "fmt"
- "io"
- )
- // writeDebug writes the debug code file.
- func writeDebug(w io.Writer, c *Config, toc []Asset) error {
- err := writeDebugHeader(w)
- if err != nil {
- return err
- }
- for i := range toc {
- err = writeDebugAsset(w, c, &toc[i])
- if err != nil {
- return err
- }
- }
- return nil
- }
- // writeDebugHeader writes output file headers.
- // This targets debug builds.
- func writeDebugHeader(w io.Writer) error {
- _, err := fmt.Fprintf(w, `import (
- "fmt"
- "io/ioutil"
- "os"
- "path/filepath"
- "strings"
- )
- // bindataRead reads the given file from disk. It returns an error on failure.
- func bindataRead(path, name string) ([]byte, error) {
- buf, err := ioutil.ReadFile(path)
- if err != nil {
- err = fmt.Errorf("Error reading asset %%s at %%s: %%v", name, path, err)
- }
- return buf, err
- }
- type asset struct {
- bytes []byte
- info os.FileInfo
- }
- `)
- return err
- }
- // writeDebugAsset write a debug entry for the given asset.
- // A debug entry is simply a function which reads the asset from
- // the original file (e.g.: from disk).
- func writeDebugAsset(w io.Writer, c *Config, asset *Asset) error {
- pathExpr := fmt.Sprintf("%q", asset.Path)
- if c.Dev {
- pathExpr = fmt.Sprintf("filepath.Join(rootDir, %q)", asset.Name)
- }
- _, err := fmt.Fprintf(w, `// %s reads file data from disk. It returns an error on failure.
- func %s() (*asset, error) {
- path := %s
- name := %q
- bytes, err := bindataRead(path, name)
- if err != nil {
- return nil, err
- }
- fi, err := os.Stat(path)
- if err != nil {
- err = fmt.Errorf("Error reading asset info %%s at %%s: %%v", name, path, err)
- }
- a := &asset{bytes: bytes, info: fi}
- return a, err
- }
- `, asset.Func, asset.Func, pathExpr, asset.Name)
- return err
- }
|