k3s/pkg/static/zz_generated_bindata.go

275 lines
458 KiB
Go
Raw Normal View History

// Code generated for package static by go-bindata DO NOT EDIT. (@generated)
2019-03-20 00:27:44 +00:00
// sources:
// build/static/charts/traefik-25.0.2+up25.0.0.tgz
// build/static/charts/traefik-crd-25.0.2+up25.0.0.tgz
//go:build !no_stage
// +build !no_stage
2019-03-20 00:27:44 +00:00
package static
import (
"bytes"
"compress/gzip"
"fmt"
"io"
"io/ioutil"
"os"
"path/filepath"
"strings"
"time"
)
func bindataRead(data []byte, name string) ([]byte, error) {
gz, err := gzip.NewReader(bytes.NewBuffer(data))
if err != nil {
return nil, fmt.Errorf("Read %q: %v", name, err)
}
var buf bytes.Buffer
_, err = io.Copy(&buf, gz)
clErr := gz.Close()
if err != nil {
return nil, fmt.Errorf("Read %q: %v", name, err)
}
if clErr != nil {
return nil, err
}
return buf.Bytes(), nil
}
type asset struct {
bytes []byte
info os.FileInfo
}
type bindataFileInfo struct {
name string
size int64
mode os.FileMode
modTime time.Time
}
// Name return file name
2019-03-20 00:27:44 +00:00
func (fi bindataFileInfo) Name() string {
return fi.name
}
// Size return file size
2019-03-20 00:27:44 +00:00
func (fi bindataFileInfo) Size() int64 {
return fi.size
}
// Mode return file mode
2019-03-20 00:27:44 +00:00
func (fi bindataFileInfo) Mode() os.FileMode {
return fi.mode
}
// Mode return file modify time
2019-03-20 00:27:44 +00:00
func (fi bindataFileInfo) ModTime() time.Time {
return fi.modTime
}
// IsDir return file whether a directory
2019-03-20 00:27:44 +00:00
func (fi bindataFileInfo) IsDir() bool {
return fi.mode&os.ModeDir != 0
2019-03-20 00:27:44 +00:00
}
// Sys return file is sys mode
2019-03-20 00:27:44 +00:00
func (fi bindataFileInfo) Sys() interface{} {
return nil
}
var _chartsTraefik2502Up2500Tgz = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x00\x0f\x40\xf0\xbf\x1f\x8b\x08\x14\x00\x00\x00\x00\x00\xff\x29\x00\x2b\x61\x48\x52\x30\x63\x48\x4d\x36\x4c\x79\x39\x35\x62\x33\x56\x30\x64\x53\x35\x69\x5a\x53\x39\x36\x4f\x56\x56\x36\x4d\x57\x6c\x6a\x61\x6e\x64\x79\x54\x51\x6f\x3d\x48\x65\x6c\x6d\x00\xec\xbd\xdb\x72\x24\x37\xb2\x20\xa8\xd7\xcd\xaf\xc0\x49\x56\x1f\x91\x12\x33\xf2\xc2\x4b\x49\x39\xa7\x7a\x9a\x22\x4b\x2d\x6e\x97\xaa\xd2\x48\x56\x9f\x3d\xd6\xdd\x5b\x05\x46\x20\x33\x21\x46\x06\xa2\x01\x44\x92\xd9\xa5\x32\xdb\x4f\xd8\x35\xdb\xa7\xd9\x31\x9b\xc7\x9d\x3f\xd8\xff\x99\x2f\x98\x4f\x58\x83\xe3\x12\x88\x5b\xde\xc8\x62\x49\x6a\x46\xb7\xa9\x98\x11\x80\xc3\x01\x38\x1c\xee\x0e\x87\xbb\xe4\x98\x8c\xe9\x4d\xf7\x74\x8a\xb9\x0c\x16\x78\x16\x7f\xf1\xe0\x4f\xaf\xd7\xeb\x1d\x1f\x1e\xc2\xbf\xbd\x5e\xaf\xfc\xef\xc1\xc1\xe0\xf0\x8b\xfe\xe1\xd1\x60\x30\x18\x1c\xf5\x0e\x0e\xbf\xe8\xf5\x07\xc7\xfd\xe7\x5f\xa0\xde\xc3\xa3\x52\x7d\x32\x21\x31\xff\xa2\x77\xef\xb6\xca\x9d\xfb\x95\x3c\x38\x49\x98\xc4\x92\xb2\x44\x0c\x5b\x08\x61\x2e\xe9\x18\x87\x72\x9a\x5d\x07\x94\x75\xc3\x29\x4e\x26\x44\x0c\x51\xbb\x83\xfe\xda\x1e\x13\x2c\x87\xe8\x7f\xfc\xd7\xff\x8e\x70\x14\xa1\x29\xc1\xb1\x9c\x86\x53\x12\xde\x20\x9a\x4c\x38\x11\xe2\x82\x65\x92\xfc\xb5\xfd\xd7\x24\x2f\x3d\xbc\x66\x6c\xa6\x20\x23\x24\xb2\x34\x65\x5c\xa2\xa9\x94\x29\xe2\x24\xa2\x9c\x84\xd0\x30\xc2\x49\xa4\xdf\x86\x53\x1c\xc7\x44\x35\x89\x6e\xa9\x9c\xa2\x90\x70\xd9\x99\xe1\x04\x4f\x08\x6f\x84\xcb\xc9\x2d\xe3\x37\x00\x04\xc7\x31\xbb\x45\x59\x1a\x61\x49\x10\x1b\xa3\x04\xcf\x88\x48\x71\x48\x50\xca\x62\x1a\x2e\xd0\x98\x71\xf4\x47\x2c\xc9\x2d\x5e\x38\x78\xf4\x6e\x88\x22\x2a\xf0\x75\x4c\xd0\x69\x9c\x09\x49\xf8\x05\x8b\x09\xc0\x56\x40\xbd\x77\xdf\xd1\x24\xa2\xc9\x04\xdd\x4e\x49\x82\x12\x26\x51\x42\x48\x44\xa2\x22\x28\x22\x49\x28\x51\xc8\xb8\xea\x5f\xbc\x40\xf3\x03\x34\x27\x5c\x50\x96\x00\x48\xa8\x9b\x09\x05\x46\x4c\x31\xa2\x09\x7a\x4f\x67\x78\x42\x02\x89\x27\xef\x0b\x90\xfc\xde\x5c\x4a\x8e\x25\x99\x2c\x02\xce\xe2\x98\x26\x93\xb7\xf0\x36\x98\xe1\xbb\xb7\x09\x9e\x63\x1a\x2b\xf4\x01\xbe\x64\xe8\x9a\xa0\x14\x0b\x41\x22\x05\x1d\xab\xf1\x45\x34\x91\x88\x71\x24\x24\xa7\xc9\xa4\xd8\x4a\x14\xa1\x19\x15\x1a\x21\x92\x62\x8e\x25\xe3\xaa\x62\xc8\x23\x01\x25\x01\xac\x57\x7a\xc4\xd9\x8c\xc8\x29\xc9\x04\x12\x21\xc7\xa9\xaa\xe9\xd1\x11\x62\x49\xbc\x40\x74\x8c\x04\xe1\x73\x1a\x92\x1f\x59\x42\x15\x48\x35\x5e\x21\x27\x58\x9a\x01\x33\x60\x23\x16\x8a\x21\xfa\x9e\xde\x21\xb9\x48\x99\x6a\x58\x4e\x09\x8a\xc8\x18\x67\xb1\x44\x73\x1c\x67\x44\xa0\x31\x8d\x1d\x61\x85\x53\xc6\xc9\x10\x71\x32\x63\x73\x82\x62\x7c\x4d\x62\x74\x3b\xa5\x52\xcf\xb4\x9e\x36\x89\xae\x5e\x5d\xbe\x49\x15\x3e\x85\x6a\xbb\x9c\xc4\x04\x0b\xb2\x37\x44\x7f\x7d\xdb\xeb\xf5\xfa\xdf\x1f\x7f\xd3\x43\x69\x76\x1d\x53\x31\x45\xf3\xc1\x51\xd0\x0b\x7a\xc5\x1a\x11\x49\xc5\x9e\xa6\x34\x43\x58\x86\x67\xa2\x88\x85\x37\x84\x23\x89\x27\x6a\xd0\xe7\x83\xa0\xdf\x0b\x8e\xea\x2a\xdb\x8a\xba\x82\x5a\x58\x53\x12\xcf\xb2\x84\x4a\x49\x84\x84\x1f\x1d\xfb\x0b\x1a\x2a\x41\x3e\x08\xfa\x83\xe0\xa0\x08\x39\xa4\x79\x1f\x8e\x06\xcf\xed\x9f\x87\xcf\x9f\xc3\x1c\x91\x01\x41\x0a\x1c\x90\x9b\x59\x26\xaa\xe7\x66\xf6\xdb\x2d\x84\xc6\x31\x21\x32\x08\xb1\x94\x31\x51\x38\x5d\x67\x49\x14\x93\x0e\x8d\x86\xe8\xe6\x40\xb4\x70\x4a\xff\xac\xc9\x76\x88\xe6\x83\x16\x4e\x53\xef\x27\x74\xb5\x15\x11\x11\x72\x0a\xa3\x3c\x44\x27\xe8\xca\x8c\xcb\x35\x56\xa4\xf7\xa7\xec\x9a\xf0\x84\x48\x22\x2c\x7b\x40\x21\x4b\xa4\xa2\x5f\xc2\x5b\x53\x36\x23\x43\x58\xf4\x62\xd8\xed\x9a\x11\x55\x58\xb4\x68\xa8\xa0\xd9\x2f\x1c\xdf\x06\x13\xaa\xf8\x51\x26\x08\x57\x00\x48\x22\x83\x90\xcd\x6c\x1d\xf7\xef\x7c\x10\x1c\x74\x15\x31\x75\x4d\xa9\xae\x5a\x02\x52\x74\xe9\x6c\xe2\x1a\x88\xd9\x84\x05\x69\x32\x69\xdd\x90\xc5\x2d\xe3\x91\x18\xb6\x3a\x76\x3e\x5b\x1d\x8b\x68\xab\x83\x12\x22\x15\x57\xa1\xaa\x68\x76\x4d\x5c\xd7\xbf\xfc\xfd\x8b\x7e\xd0\x3f\x0e\x7a\x9d\xde\x97\xad\x19\xa6\x89\xc4\x34\x21\x1c\xe0\x90\x19\xa6\xf1\x10\x91\x19\x8d\xc9\x1f\xe6\x38\x9b\x10\x85\x68\x0b\x01\x1b\x32\xef\xe1\x75\x5e\x36\xc2\x09\x25\x71\x20\xd9\x2c\x24\x3f\xfd\x61\xa2\x5e\x16\xea\x44\xfa\x4b\x5e\x21\x8e\xc8\x3f\xfe\x90\x0f\x97\x2b\
2019-03-20 00:27:44 +00:00
func chartsTraefik2502Up2500TgzBytes() ([]byte, error) {
2019-03-20 00:27:44 +00:00
return bindataRead(
_chartsTraefik2502Up2500Tgz,
"charts/traefik-25.0.2+up25.0.0.tgz",
2019-03-20 00:27:44 +00:00
)
}
func chartsTraefik2502Up2500Tgz() (*asset, error) {
bytes, err := chartsTraefik2502Up2500TgzBytes()
2019-03-20 00:27:44 +00:00
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "charts/traefik-25.0.2+up25.0.0.tgz", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
var _chartsTraefikCrd2502Up2500Tgz = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\x9b\x63\x8f\x2e\x00\x16\xa4\xdb\xb6\x6d\xdb\xb6\x6d\xfb\xb6\x6d\xdb\xc6\x6d\xdc\xb6\x6d\xdb\xb6\x6d\xdb\xc6\xdb\xda\xcc\x4c\x36\x9b\xec\xf9\x50\x95\xd4\xf9\x07\x95\x7a\x08\x63\xa0\xd0\x80\xfe\x73\xbf\xd4\x40\xb4\x7f\xa4\x54\x98\x4c\xa4\xe4\x39\xe4\xbc\xb8\xd9\x8d\x59\x35\x98\x4c\x55\xd9\xad\x74\x54\xb9\x39\x14\x35\x34\x38\xe4\x35\x6d\xad\xff\xd8\x9b\x7a\xa9\x29\x3b\xf0\x4b\x99\xd9\xda\x01\x5d\xf7\xfc\xba\xe0\x72\x27\x51\xf2\x08\x7e\xd6\x09\x35\x93\xae\x5e\xfa\x15\x52\x6d\x38\xcf\xd5\x52\x72\x1c\x56\x9c\xbc\x6a\xf3\xb6\x66\x51\x4e\xf2\xf7\x38\x39\x31\xc3\x6b\x04\x91\xe5\x56\xc2\xb0\x03\xc9\xb0\x7c\xbe\xfe\xbc\x61\x4a\x01\xbd\xe0\x53\xa1\x49\x4f\x3c\xb2\x5d\x45\xd8\x57\x41\xe5\xff\x85\x26\x4a\x94\xf2\x65\x51\x75\x96\x4b\x7d\x76\x47\x79\xf0\xf4\xee\x18\xd5\xcb\xb5\x75\xcc\xfc\xb2\xaa\x9b\xbb\xb8\xb8\xb8\x40\x3c\x3b\xbb\xff\x5d\x5a\x5a\x7a\xfd\x55\x34\xfc\xf9\xb8\x56\xb4\x38\xab\x33\xec\xf5\xfd\x78\x7c\xb9\xa8\x7a\x12\xcc\xc9\xed\xf1\x7e\x19\xaa\x12\x2c\x58\xfa\x76\x2f\xfa\xa5\x0e\x1d\xfe\x52\x2c\xe3\x0d\xa8\x92\xdf\xe6\x7c\xdc\xa7\x33\x41\x91\x9d\x64\x79\x38\xc5\x16\x99\x0a\x45\xf2\x42\xf9\x43\x8d\xea\x2c\xb2\xe1\xaa\x6c\xea\x24\x42\xc1\xe6\x1f\x62\x6f\x18\x65\xc1\x55\xd6\x87\xc4\x40\x35\xb5\x9b\xdf\xd5\x64\xc1\x35\x57\x25\x68\x98\x9b\x9d\x93\xdb\xed\x8f\x81\x8a\xec\x94\x29\xeb\xe9\xf5\x0f\x3a\x2a\x59\x8c\xa8\x83\xe2\xfc\x11\x50\x23\x24\x3b\x9a\x98\xe1\x32\xc7\x92\x9d\xc4\x59\xce\x01\x9a\x37\x21\xaf\xb0\x4b\x94\x7d\x06\x1d\x97\xaf\x3a\x77\x6b\xfb\xc9\x68\x98\x97\x9d\xdb\xfd\x15\x10\x8d\xf7\xe3\x04\xb8\xb6\x61\xbd\xcd\x3b\xae\xa8\x0b\x90\x5e\xe4\x1b\x48\x8a\xac\xf0\xf2\x41\x69\x90\x33\xce\x6c\x48\x16\xf9\xca\x31\xa7\x55\x08\xdd\xaf\xfe\x2b\x16\x9b\x84\xf2\xf3\xf2\x7b\xf9\x75\x82\x58\x36\xf3\xf2\xfb\xb8\x32\xb5\xb4\x16\xf1\xf2\x8b\x35\xd7\x34\x61\xba\xa8\xb5\xca\x55\x76\x1c\x43\x96\x01\x90\xcd\xde\xfe\xc9\x52\x32\xde\xbf\xbd\xde\xa0\x9f\x39\xe4\x3c\x6f\x44\x4a\x2a\x59\x13\xab\x0f\x96\x3c\xa6\xd7\x5e\x8c\x1d\xe4\x91\x8f\x1a\x66\x4e\xd5\x82\x4e\x4c\x95\x13\x96\x92\x27\x9d\x4d\x0a\xbd\x9f\x88\x36\xa5\x6c\x1b\x09\xa6\x83\xc9\x1c\x0e\x15\x3d\x2a\x81\xe2\xe6\xff\x38\x38\x3e\x61\x0d\x25\x51\xc8\x07\xc0\xcb\x47\xfd\xe5\x9a\xd9\xcb\xaf\x96\x4a\xb2\x80\xb2\x4a\x5c\xc8\x8e\xe6\x4f\x7e\xc9\x18\x97\x2e\xee\xed\x39\xac\x1e\x97\xc5\x5e\xa2\x2a\xc4\x65\xe5\x5f\x5e\xd6\xbf\x70\xaf\x53\xef\xba\xe7\x29\x10\xf9\x69\x79\x5a\x82\xa4\x21\xfb\xca\xa6\x04\x1f\x93\xae\x12\xbc\x8f\xc9\xdf\xa8\x94\x62\x72\xf8\x79\x85\x23\x46\x66\x26\x3f\x14\xa8\x50\x3c\xe3\x22\x79\x60\x0d\x85\x03\xcd\xa7\x45\x15\x3d\xdc\xc1\x56\x78\x64\x17\x58\xaa\x11\xb7\x49\x32\xde\x51\x0d\xd5\x52\x68\x8c\xd9\x58\x61\xac\x3b\x8d\x5b\x83\x6a\x11\x73\x58\xf9\x23\x26\x0b\x1d\x6b\x99\x49\x49\x46\x9e\x41\x40\x34\x9c\x0a\x55\x84\x3b\x43\xf0\xfc\x73\x6a\x1e\x9e\x0f\x21\x48\xad\x3b\xc3\x3d\x05\x9d\xb6\xdc\x28\x23\xd8\x42\xad\xea\xb3\x75\x39\x04\xbb\x22\xaf\x0f\x33\x62\x5d\x8b\xb4\x83\x28\xca\x14\x05\x6f\x56\x89\xe9\x2c\x0f\x7e\x48\x76\x26\xb6\x3e\xcb\x8e\x23\x31\xbf\x02\xd7\x30\xf2\x2b\x49\xe2\x15\x7c\x1a\x5a\x65\xfe\x57\xab\x89\x24\x6a\x05\xad\x8b\x54\x8f\x44\x81\xa4\x75\xf2\xfc\xce\x6c\x0b\x44\x1a\x82\x10\x7c\x82\x42\xd7\x6e\x51\x0e\x25\xf7\x00\x6c\xe7\xa0\x98\x68\x0c\xca\x82\x59\xe6\x01\xc2\xa9\xb0\x37\x38\xba\x7a\x95\x00\x0d\x99\xf2\x9c\xf4\x08\x6c\xc1\x76\x62\x37\xbf\x25\xa5\xc3\x93\x35\xa7\xb6\xbc\x59\x96\xdc\xd8\x4a\xc7\x54\xcd\xbe\x94\xe9\xea\xa2\xf0\x6f\x6c\x8c\x95\xdc\xad\x14\x0b\xba\x2b\xfb\x00\x9f\x8e\xaa\x34\x89\xb6\x23\xcb\x08\x77\x8e\xd0\x1a\xab\x16\x03\xa5\xd5\x57\x76\xd6\x08\xb9\x01\x1b\xa0\xb2\x4d\x82\x98\x7b\x46\xa3\x85\xd0\xe8\xd0\x5b\x42\x68\xc6\x80\xfd\x6b\x5d\x6d\x45\x4d\x2d\x56\xa3\x0e\xcd\xa3\x36\x20\x73\x8f\xe8\xd3\x0a\x2b\x96\xe3\x2d\xe8\x4e\x5d\x5c\x19\x3e\xc8\x18\x6b\x26\x35\xf4\x4a\x58\xcf\x39\x55\x24\x8b\x2c\xc6\x45\x82\x15\x3a\x40\x0c\x9a\x5c\x3b\xeb\xbb\x50\xab\x58\xad\xd2\xe9\x57\x52\x38\x54\xcd\xc4\x2d\x98\x41\xd8\x3f\x1f\x5c\x58\x9c\xc0\x44\xfa\x10\xd5\xf5\x5f\x81\x6c\x76\xd2\x31\x0a\xec\xe3\x3e\x68\x3e\x17\x3d\x45\x74\xc3\x1f\x51\x25\x4c\xbf\x9b\xc1\x4c\x9b\x16\xc2\x
func chartsTraefikCrd2502Up2500TgzBytes() ([]byte, error) {
return bindataRead(
_chartsTraefikCrd2502Up2500Tgz,
"charts/traefik-crd-25.0.2+up25.0.0.tgz",
)
}
func chartsTraefikCrd2502Up2500Tgz() (*asset, error) {
bytes, err := chartsTraefikCrd2502Up2500TgzBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "charts/traefik-crd-25.0.2+up25.0.0.tgz", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
2019-03-20 00:27:44 +00:00
a := &asset{bytes: bytes, info: info}
return a, nil
}
// Asset loads and returns the asset for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func Asset(name string) ([]byte, error) {
cannonicalName := strings.Replace(name, "\\", "/", -1)
if f, ok := _bindata[cannonicalName]; ok {
a, err := f()
if err != nil {
return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
}
return a.bytes, nil
}
return nil, fmt.Errorf("Asset %s not found", name)
}
// MustAsset is like Asset but panics when Asset would return an error.
// It simplifies safe initialization of global variables.
func MustAsset(name string) []byte {
a, err := Asset(name)
if err != nil {
panic("asset: Asset(" + name + "): " + err.Error())
}
return a
}
// AssetInfo loads and returns the asset info for the given name.
// It returns an error if the asset could not be found or
// could not be loaded.
func AssetInfo(name string) (os.FileInfo, error) {
cannonicalName := strings.Replace(name, "\\", "/", -1)
if f, ok := _bindata[cannonicalName]; ok {
a, err := f()
if err != nil {
return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
}
return a.info, nil
}
return nil, fmt.Errorf("AssetInfo %s not found", name)
}
// AssetNames returns the names of the assets.
func AssetNames() []string {
names := make([]string, 0, len(_bindata))
for name := range _bindata {
names = append(names, name)
}
return names
}
// _bindata is a table, holding each asset generator, mapped to its name.
var _bindata = map[string]func() (*asset, error){
"charts/traefik-25.0.2+up25.0.0.tgz": chartsTraefik2502Up2500Tgz,
"charts/traefik-crd-25.0.2+up25.0.0.tgz": chartsTraefikCrd2502Up2500Tgz,
2019-03-20 00:27:44 +00:00
}
// AssetDir returns the file names below a certain
// directory embedded in the file by go-bindata.
// For example if you run go-bindata on data/... and data contains the
// following hierarchy:
//
// data/
// foo.txt
// img/
// a.png
// b.png
//
2019-03-20 00:27:44 +00:00
// then AssetDir("data") would return []string{"foo.txt", "img"}
// AssetDir("data/img") would return []string{"a.png", "b.png"}
// AssetDir("foo.txt") and AssetDir("notexist") would return an error
// AssetDir("") will return []string{"data"}.
func AssetDir(name string) ([]string, error) {
node := _bintree
if len(name) != 0 {
cannonicalName := strings.Replace(name, "\\", "/", -1)
pathList := strings.Split(cannonicalName, "/")
for _, p := range pathList {
node = node.Children[p]
if node == nil {
return nil, fmt.Errorf("Asset %s not found", name)
}
}
}
if node.Func != nil {
return nil, fmt.Errorf("Asset %s not found", name)
}
rv := make([]string, 0, len(node.Children))
for childName := range node.Children {
rv = append(rv, childName)
}
return rv, nil
}
type bintree struct {
Func func() (*asset, error)
Children map[string]*bintree
}
var _bintree = &bintree{nil, map[string]*bintree{
"charts": &bintree{nil, map[string]*bintree{
"traefik-25.0.2+up25.0.0.tgz": &bintree{chartsTraefik2502Up2500Tgz, map[string]*bintree{}},
"traefik-crd-25.0.2+up25.0.0.tgz": &bintree{chartsTraefikCrd2502Up2500Tgz, map[string]*bintree{}},
2019-03-20 00:27:44 +00:00
}},
}}
// RestoreAsset restores an asset under the given directory
func RestoreAsset(dir, name string) error {
data, err := Asset(name)
if err != nil {
return err
}
info, err := AssetInfo(name)
if err != nil {
return err
}
err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755))
if err != nil {
return err
}
err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode())
if err != nil {
return err
}
err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
if err != nil {
return err
}
return nil
}
// RestoreAssets restores an asset under the given directory recursively
func RestoreAssets(dir, name string) error {
children, err := AssetDir(name)
// File
if err != nil {
return RestoreAsset(dir, name)
}
// Dir
for _, child := range children {
err = RestoreAssets(dir, filepath.Join(name, child))
if err != nil {
return err
}
}
return nil
}
func _filePath(dir, name string) string {
cannonicalName := strings.Replace(name, "\\", "/", -1)
return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
}