k3s/pkg/static/zz_generated_bindata.go

275 lines
472 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-27.0.201+up27.0.2.tgz
// build/static/charts/traefik-crd-27.0.201+up27.0.2.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 _chartsTraefik270201Up2702Tgz = []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\xfd\xeb\x76\x1b\x39\x92\x28\x0a\xd7\xdf\x8f\x4f\x81\xa6\xdc\x53\x52\x8d\x98\x24\x75\xb3\x8b\x7b\xd4\x7b\x54\x92\xab\xac\xaf\x5d\x36\x97\x24\xf7\x9c\x59\x3d\x73\x6c\x28\x13\x24\x51\x4a\x26\xb2\x01\xa4\x64\x96\xcb\x2f\xb2\xd7\x59\x6b\xff\x9d\xe7\x3a\x4f\xb0\x1f\xe1\x2c\x04\x2e\x89\xbc\x91\x49\x4a\x56\x5d\x46\xd9\xbd\xca\x62\x26\x10\x08\x04\x02\x81\x88\x40\x20\x20\x39\x26\x13\x7a\xd3\x3f\x9d\x61\x2e\x83\x05\x9e\xc7\x5f\x3d\xf8\x33\x18\x0c\x06\x47\x07\x07\xf0\xef\x60\x30\x28\xff\x3b\xdc\x3b\x1a\x7c\x35\x3c\x38\x7a\x7e\x70\x34\xdc\x3b\x1c\xee\x7f\xa5\xde\xec\x1d\x7d\x85\x06\x0f\x8f\x4a\xf5\xc9\x84\xc4\xfc\xab\xc1\xbd\xdb\x2a\x77\xee\x77\xf2\xe0\x24\x61\x12\x4b\xca\x12\x31\xea\x20\x34\x89\x09\x91\x41\x88\xa5\x8c\x49\x40\x59\xff\x3a\x4b\xa2\x98\xf4\x68\x34\x42\x37\xfb\xa2\x83\x53\xfa\x37\xc2\x05\x65\xc9\x08\xdd\xee\x75\x70\x9a\x7a\x3f\x83\xe1\x30\x18\x0e\x3a\x11\x11\x21\xa7\xa9\x84\xb7\x27\xe8\x4a\x33\x18\xba\xc6\x82\x44\xe8\xaf\xd9\x35\xe1\x09\x91\x44\x20\x9a\x4c\x39\x11\x02\x85\x2c\x91\x9c\xc5\x31\xe1\x9d\x19\x9b\x93\x11\x9a\x49\x99\x8a\x51\xbf\x6f\x58\x53\xa1\xd1\xa1\xa1\x82\x66\xbf\x70\x7c\x17\x4c\xa9\x9c\x65\xd7\x99\x20\x5c\x01\x20\x89\x0c\x42\x36\xb7\x75\xdc\xbf\xb7\x7b\xc1\x7e\x3f\x62\xa1\xe8\x9b\x52\x7d\x2c\x04\x91\xa2\x4f\xe7\x53\xd7\x40\xcc\xa6\x2c\x48\x93\x69\xe7\x86\x2c\xee\x18\x8f\xc4\xa8\xd3\x43\xe6\x63\xa7\x67\x11\xed\xf4\x50\x42\xe4\x1d\xe3\x37\x54\x15\xcd\xae\x89\xeb\xfb\xd7\x7f\x39\x1e\x06\xc3\xa3\x60\xd0\x1b\x7c\xdd\x99\x63\x9a\x48\x4c\x13\xc2\x01\x0e\x99\x63\x1a\x8f\xd0\x9c\x86\x33\x12\x07\x31\xa3\x82\xc4\x24\xe3\xff\x9a\xf7\xae\x83\x50\x82\x55\xc7\xe7\xee\x6b\x5e\x2f\x9c\x61\x1e\x53\x12\xcc\x70\x4c\x16\x75\x95\x4c\x81\x1e\x14\xc8\xeb\x71\x32\xa7\xc1\x75\x46\x85\x60\x49\x5d\xb5\x08\xf3\x9b\x3b\x82\x6f\x09\x7f\xf1\x5c\xf5\x0c\x5e\xfe\x94\x30\xd5\x7d\xfa\x53\x47\xff\xb6\x34\x10\x2c\xe3\x21\x81\xee\xd8\x21\xd0\xe4\xaf\xa3\x79\xab\x42\xbd\x19\x89\xe7\x3d\x85\xbb\xec\xc8\x45\x4a\x46\x08\xa7\x69\x4c\x43\xe0\xc4\xce\xad\x25\xec\xde\xf3\x60\x10\xec\x0d\x86\xff\x9c\xa5\xfa\xcf\xce\xaf\x3d\x5f\xfe\x68\x8f\x9b\x28\x38\xce\x88\xf8\x32\x0b\xc0\x52\xf9\x3f\x1c\x1c\x1d\x1c\x1e\x96\xe4\xff\xfe\x70\x30\x78\x92\xff\x8f\xf1\x6c\xa1\x33\x32\xc1\x59\x2c\x91\xe6\x00\x34\x61\xdc\xca\xec\x0e\x9d\xe3\x29\x51\xcb\xc2\x16\xea\xf5\x9c\x24\x87\xb7\x88\x93\x94\x09\x2a\x19\x5f\x74\x90\xf7\x63\x84\x38\x4e\xc2\x19\xe1\xfd\x39\xe5\x9c\x71\x12\xf5\x62\x7a\xcd\x31\x5f\xf4\xac\x7c\x30\xe0\x22\xdd\xae\x40\x92\xa1\x7c\x21\xe9\x20\x24\xf1\x74\x84\xba\x6a\x3d\x19\x04\xc3\x61\xb7\xbe\xf9\x34\x8b\x63\x94\xb2\x98\x86\xaa\x7d\xf5\x6b\x0c\x3f\x46\xe8\x7c\xf2\x86\xc9\x31\x27\x82\x24\xb2\xd3\x81\xaa\x27\x51\x84\x70\x14\x51\x25\x5c\x70\x8c\x62\x7c\x4d\x62\x68\x36\x8e\x11\x27\x46\xba\x75\x42\x36\x9f\xb3\xe4\xb5\xfa\x28\x46\xe8\xd3\xe7\x4e\x67\xab\xb3\x85\x4e\x59\x32\xa1\xd3\x8c\x13\x24\x67\x04\x45\x24\x8d\xd9\x62\xae\x40\x6f\x75\xf2\x1f\x8e\x46\x2f\x13\x7c\x1d\x17\x8a\x21\x44\xe0\x5d\xa4\xc4\x69\x46\x6c\xc1\x33\x57\x02\x31\x8e\xce\x30\x99\xb3\xe4\x92\xa8\xe2\x37\x34\x89\x46\xde\x77\x5b\xe3\x4d\x36\xbf\x26\x1c\xb1\x09\x4a\x59\x24\xd4\xbf\x45\x84\xd0\x36\x4b\xe2\x85\x96\xa3\x44\xa0\xbb\x19\x49\x00\x16\x3a\x3e\xf6\xa0\xed\xe8\xd1\x52\xa2\x56\x8c\xd0\xb0\x0a\x9c\xc5\x11\x9a\x51\xa1\xc6\x52\x91\x88\x13\xb5\x96\x19\x62\xb1\x3b\xa4\x56\xea\x6b\x1c\xde\xa0\xed\xf3\x09\x4a\x98\x44\x82\xc8\x5d\x3b\x96\xfe\xf2\x0e\xec\x84\xa8\x50\x05\x54\xf5\xe1\x60\x07\x1a\xe3\xe4\x96\xaa\x81\x7e\xa5\xdb\x78\x4d\xe7\x54\x7a\x88\x9c\xcc\x59\xa6\x68\x32\x41\x92\xce\x09\xda\xa6\x09\x12\x24\x64\x49\x24\x76\xd0\x35\x99\x30\x4e\xfc\x46\xee\x68\x1c\x23\x41\x92\x08\x68\x71\x79\xfe\xc3\x5f\xcf\x5f\xbf\x46\x82\x4e\xd5\x30\xd3\x89\xe3\x99\x88\x11\xa1\xb1\x9d\x65\x12\x45\xec\x0e\xf8\x8c\xf0\x39\x4d\x60\xc5\xf9\x81\xe3\x90\x8c\x09\xa7\x2c\xba\xd4\xad\x8d\xd0\xd
2019-03-20 00:27:44 +00:00
func chartsTraefik270201Up2702TgzBytes() ([]byte, error) {
2019-03-20 00:27:44 +00:00
return bindataRead(
_chartsTraefik270201Up2702Tgz,
"charts/traefik-27.0.201+up27.0.2.tgz",
2019-03-20 00:27:44 +00:00
)
}
func chartsTraefik270201Up2702Tgz() (*asset, error) {
bytes, err := chartsTraefik270201Up2702TgzBytes()
2019-03-20 00:27:44 +00:00
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "charts/traefik-27.0.201+up27.0.2.tgz", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
var _chartsTraefikCrd270201Up2702Tgz = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\xbb\xf3\x53\x26\x7e\xd8\x80\x9b\x6d\xd7\x66\x7b\xb3\x6d\xd7\x66\xdb\xb6\x6d\xd7\xa6\xcd\xb6\xeb\xc9\x36\x36\x7b\xb3\xdd\x93\x5d\x4f\x9d\x79\xbf\xef\x3b\xe7\x87\x33\xe7\x33\x9f\x99\xfb\x97\xfb\xfe\x07\xae\xb9\x2e\x92\x38\x38\x2c\xb0\xff\x79\xdf\x74\x60\x0c\x26\x32\xaa\x2c\x66\x32\x8a\x5c\x0a\x3e\xbc\x9c\xa6\xec\x9a\x2c\xe6\x6a\x9c\x36\xba\x6a\xbc\x5c\xca\x9a\x9a\x5c\x8a\x5a\xf6\xb6\x26\x8e\xe6\x3e\xea\xbf\x9c\x04\x65\x2c\xec\x1d\xc0\xae\x7a\x2f\xdd\x28\xb8\x53\x7e\x5e\xcc\x81\xb4\x48\xcb\x29\x56\xb3\x7b\x8b\x65\x3c\x6a\x80\x3a\xca\xf6\x23\xe9\x54\x2f\x36\x40\xf7\x76\x1f\x89\xd6\xf1\x0f\x1b\x24\xcd\x10\xca\xfa\x6a\x04\x4e\xb0\x58\xdb\xf7\xab\xb7\x5d\x27\x52\xf0\xe5\x38\x68\xac\xd7\xc5\xe1\xe1\x77\xe3\x76\xed\x08\x69\xea\x60\x09\xf2\xbb\x29\x85\x49\xd6\xac\x85\x0f\xd1\x91\xc3\xfd\x15\x08\x37\x9f\xb6\x21\x9b\xfb\x19\xc3\x82\x05\x6b\x8e\xf7\xeb\x03\x88\x2f\x61\x82\x84\x8d\x6f\x92\xde\xb7\xaf\x83\x9c\x87\xb8\x9b\xbe\xfe\xd7\xeb\xcf\x99\xee\x87\xf6\xdd\xf8\xd9\x5d\xc3\x78\xa9\xdd\xc2\x85\xc0\xee\x05\x10\x96\x98\xe9\xd7\x8c\xf5\x69\xdb\xc6\x48\x6f\x32\xac\x15\x7e\xaa\xb6\x6a\x46\x0c\x89\x21\x19\x87\x3c\xdc\x6f\x2b\xf4\x0c\x36\x32\xab\x34\xe4\x0a\x49\x1c\x1a\x73\x91\x43\x92\x79\x90\xde\x1d\xc2\xe9\x23\xee\x10\xb4\xc5\x3a\xaa\xb5\xcf\x17\xc2\xa9\xcf\xd3\x69\x0e\xe0\xe1\x01\xf0\xb0\x50\x93\x19\x1d\xbd\xa4\x3f\xd4\xc0\x9d\x95\xcc\x23\x0b\x95\x82\x18\x5a\xef\xd8\x00\x9d\xcd\x9a\x38\x5d\xea\x97\xbe\x9f\xf6\x19\x6c\xab\x76\x9b\xae\x7f\x7c\x04\x1b\xfe\x20\x50\x84\xfe\x78\xb1\xb2\xc8\x75\x7b\xf2\x01\x58\x58\xcf\x59\x78\xfb\x56\x3b\x7a\x2f\x68\xc8\xcf\xf6\x0a\x0a\xaf\xe8\xfb\xa2\x92\x7d\x80\x92\x27\x8f\x3c\x59\x03\x44\x5b\x60\x2c\xc5\xe7\x61\x1f\x90\x70\xe4\xb8\x91\x43\x59\x45\x50\x9a\x52\xd0\xed\x1b\x7d\x3b\xed\x26\xcc\xce\xe5\x5c\x7e\xcf\x6c\x72\x9f\x3a\x25\x5e\x7e\xb3\xe6\x0f\x1a\xcf\x6b\xaf\xf0\x54\x1c\xd5\x50\x66\xbd\xcb\xe7\x6e\x7f\x4b\xd2\xd2\x35\x0a\x04\x79\x28\x03\x5e\x61\xdd\x35\xe0\x26\x17\xf5\xc8\xb5\x07\x29\x5c\x15\x2d\x39\x4a\x1a\xe5\xd4\xc8\x5d\xe2\xa9\x34\xd9\x4a\xa9\x54\xd1\x54\x01\xd1\x00\x4a\x32\x7f\x16\x9a\xf5\xf5\x00\x56\xaa\xa5\x50\x6a\xd6\x7d\x15\x1f\x3a\x51\x29\xab\x53\x5c\xab\x12\x2d\x38\x9b\xce\xf9\x5c\x67\x22\xb5\xfb\xf4\x09\xd9\xd2\xec\x4c\x37\xcd\xa3\x32\x52\x1b\xff\x62\x06\x76\xa2\x05\x89\xad\x33\x5f\x27\x8d\xde\x5b\x37\xb1\x88\xcf\xcd\x8d\x9a\x24\x75\x19\xef\x3c\x1a\xe8\x71\xd9\x1a\xe1\x5b\xa9\x79\x7b\x43\xca\x4c\xee\xdd\x5e\x31\x19\x09\x85\xc9\xa6\xb9\xea\x73\x42\x69\xca\xc0\x88\xe4\x22\xcc\x2e\x36\x16\x4a\xe6\x39\x97\x94\x9f\xb7\x9d\xf5\x4c\xba\xc9\x58\x97\xf9\xe4\x23\xae\x29\x06\x89\x4e\x81\x3e\xfc\x36\x9f\xf1\x2a\xf2\x7d\x9a\x44\x52\x2d\x58\x80\xe8\x72\x1f\x31\xd5\x94\x73\x17\x11\xfb\x48\x96\xae\xa5\x2b\x51\x92\xeb\xeb\x31\x38\xb9\x5b\x40\xf3\x6a\x2e\x20\xd7\x59\x96\xa9\xe6\x51\x2d\x07\xbf\xd5\x48\x2f\xe0\xb5\x40\xf4\x90\x48\xac\x7a\xb3\x0b\x2b\x76\x05\x8b\xac\xcb\x28\x12\x9c\x92\x2b\xad\xda\x70\x12\x1a\x3b\x3a\x35\x17\x73\xe1\xcc\x3e\xf2\xdf\xe3\x37\xc5\x6f\x01\x3b\x0d\x41\x32\x7d\x8d\xb0\x91\x50\x6c\xd9\x5a\xcb\xd5\x14\xe7\x18\x9e\x98\x7f\x02\x25\xfd\x7f\x3c\x10\x29\xf1\x39\x10\xee\x15\xc8\xb3\x65\x87\xd8\x73\x0b\xa9\x94\x10\x5c\x63\x9d\x71\xda\x6d\x95\xee\x10\x5c\x8a\x37\x24\x24\x35\x6b\x50\x11\xa2\x3d\x85\x85\x58\x95\xd0\x66\x2c\xaf\x60\x5b\x92\xd9\x70\x85\x91\xa2\xdc\xe8\x81\xbe\x31\xda\xd9\x38\xf8\xe9\x35\x64\x0a\x01\x7c\x4c\x94\x87\xa6\x78\xa9\x54\xb2\x91\xa1\xb3\xb0\x99\xd2\x88\xf4\xb2\x94\x88\x4a\x91\x3c\x15\x90\xa4\x94\x61\x9c\x6e\x19\x63\x0d\x9d\x3a\x26\xc5\x0b\xb5\x3b\x84\x11\x47\x1c\x39\x6b\x86\x03\xb5\x3b\xc6\xde\xcb\xea\x5a\x6e\xd0\x39\xd5\x1c\x31\x2b\xb4\x95\x05\x58\x97\x8e\x41\xd9\x5b\x64\x9b\x98\x82\xaa\xbe\x2a\xd5\xca\x6b\xaf\xa6\xe3\xd2\x2e\xa9\x96\xec\x43\x1e\x9d\xf8\x56\x74\xcb\xb2\xcd\x3c\x56\x1c\xa9\xb7\xd2\x69\x2a\x29\xb2\x94\xb1\x36\x72\x65\xd9\x30\xdf\x8c\xd1\xc9\xb6\x67\x1b\x2b\x86\x21\x0a\xa2\x6a\xa1\xb1\x02\x63\x29\x23\x40\x54\x47\x36\xf7\x08\xb5\x14\x7d\x13\x51\x62\x9f\xda\xe5\xca\xe8\x10\x82\xf0\xc2\x85\x6a\xf9\xbf\xcf\xe3\xd9\xbd\xad\xb8\x9a\x03\xbc\x91\x6d\x7d\xef\x34\xbc\x31\x04
func chartsTraefikCrd270201Up2702TgzBytes() ([]byte, error) {
return bindataRead(
_chartsTraefikCrd270201Up2702Tgz,
"charts/traefik-crd-27.0.201+up27.0.2.tgz",
)
}
func chartsTraefikCrd270201Up2702Tgz() (*asset, error) {
bytes, err := chartsTraefikCrd270201Up2702TgzBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "charts/traefik-crd-27.0.201+up27.0.2.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-27.0.201+up27.0.2.tgz": chartsTraefik270201Up2702Tgz,
"charts/traefik-crd-27.0.201+up27.0.2.tgz": chartsTraefikCrd270201Up2702Tgz,
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-27.0.201+up27.0.2.tgz": &bintree{chartsTraefik270201Up2702Tgz, map[string]*bintree{}},
"traefik-crd-27.0.201+up27.0.2.tgz": &bintree{chartsTraefikCrd270201Up2702Tgz, 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, "/")...)...)
}