diff --git a/bindata.go b/bindata.go index 951e74f..a30eefc 100644 --- a/bindata.go +++ b/bindata.go @@ -10,11 +10,11 @@ import ( "compress/gzip" "fmt" "io" - "strings" - "os" - "time" "io/ioutil" + "os" "path/filepath" + "strings" + "time" ) func bindataRead(data []byte, name string) ([]byte, error) { @@ -39,14 +39,20 @@ func bindataRead(data []byte, name string) ([]byte, error) { type asset struct { bytes []byte - info os.FileInfo + info fileInfoEx +} + +type fileInfoEx interface { + os.FileInfo + MD5Checksum() string } type bindataFileInfo struct { - name string - size int64 - mode os.FileMode - modTime time.Time + name string + size int64 + mode os.FileMode + modTime time.Time + md5checksum string } func (fi bindataFileInfo) Name() string { @@ -61,6 +67,9 @@ func (fi bindataFileInfo) Mode() os.FileMode { func (fi bindataFileInfo) ModTime() time.Time { return fi.modTime } +func (fi bindataFileInfo) MD5Checksum() string { + return fi.md5checksum +} func (fi bindataFileInfo) IsDir() bool { return false } @@ -68,7 +77,44 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _displayHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x9c\x56\x6d\x73\xdb\x36\x0c\xfe\xde\x5f\x81\xe8\xae\xd7\x24\x17\x49\x4b\xb2\xdc\xba\x4c\xf2\x5d\x96\xe5\xd6\x6c\x5d\xda\x25\xd9\xdb\xf5\xfa\x81\x16\x21\x8b\x0e\x45\xaa\x24\x65\xc7\xcb\xe5\xbf\x0f\x94\x64\x5b\xf1\x4b\xda\xee\x8b\x2d\x90\xc0\x03\xe0\x21\x40\x30\xd9\xf9\xe9\xdd\xf9\xed\x3f\xef\x2f\xa0\x70\xa5\x1c\xbc\x48\xfc\x1f\x48\xa6\x46\x69\x80\x2a\x18\xbc\x00\x48\x0a\x64\xdc\x7f\xd0\x67\x89\x8e\x41\x56\x30\x63\xd1\xa5\x41\xed\xf2\xf0\x75\xd0\xdf\x2a\x9c\xab\x42\xfc\x54\x8b\x49\x1a\xfc\x1d\xfe\x71\x16\x9e\xeb\xb2\x62\x4e\x0c\x25\x06\x90\x69\xe5\x50\x91\xdd\xe5\x45\x8a\x7c\x84\x4f\x2c\x15\x2b\x31\x0d\x26\x02\xa7\x95\x36\xae\xa7\x3c\x15\xdc\x15\x29\xc7\x89\xc8\x30\x6c\x84\x03\x10\x4a\x38\xc1\x64\x68\x33\x26\x31\x3d\x9c\x03\xed\x84\x21\xdc\x16\x08\x6c\xa8\x27\x08\xc7\xd0\x00\x3b\x36\xb2\xb0\x5f\xd6\xd6\xed\x13\x68\x89\x90\x0b\x63\x1d\x41\x80\x23\x55\x9f\xdb\x0f\xc0\xd4\x0c\x34\x89\xa6\x91\xe7\xbe\xc1\x1b\xb5\x36\xfb\x2c\x77\x68\xf6\xbd\x89\xc5\x16\x32\x0c\x3b\xaf\x4e\x38\x89\x83\x73\x34\x4e\xe4\x22\x63\x0e\x61\xc2\xa4\xe0\x94\xb5\x56\x60\xd0\xd6\xd2\xd9\x24\x6e\xb5\x5e\x2c\x03\xfd\x51\x6b\x67\x9d\x61\xd5\x12\x49\x0a\x75\x47\x16\x32\x0d\xac\x9b\x49\xb4\x05\x22\x31\x51\x18\xcc\xd3\x20\x8e\x4b\x76\x9f\x71\x15\x0d\xe7\x76\x5e\xa0\xe0\xe2\xc5\x42\x7c\x1c\x1d\x47\x27\x71\x66\xed\x72\x2d\x2a\x05\x69\x59\x1b\xf4\x5d\xbf\xb9\xfd\xed\xed\x09\xd8\x42\x94\x94\x39\x87\x6b\xb4\x95\x56\x3c\x1a\x5b\xc8\xb5\x81\xcb\x8b\xd7\x60\xeb\xca\x1f\x03\xe8\xbc\x53\x46\x89\x25\x51\x62\x1b\x83\x12\xb9\x60\xf0\xa9\x46\x23\xb0\x47\x84\x87\xfe\xeb\xec\xfa\xea\xf2\xea\xe7\xd3\x3e\x28\xd7\x68\xd5\x2b\x07\x53\x6d\xee\x40\xe4\x30\xd3\x35\xf8\x83\x6e\x0e\xa0\x62\x23\x22\x8c\xe0\x72\x21\xf1\x34\x8e\x9f\xc0\x7d\x20\x6d\xe9\x28\x22\xf8\xfe\x63\xbb\x4a\xeb\x36\x33\xa2\x72\x60\x4d\x96\x06\xbe\xde\x2c\x59\x69\x6b\xa3\x8e\x1f\x4f\x89\x2f\xe2\x13\xca\x6f\x42\x94\x7c\x17\x1d\x2d\xe5\x86\x8e\x31\xb1\x91\xc4\x2d\xcc\xd7\xa0\x9a\x36\xa5\xf8\x30\xfa\x96\x30\x3b\x69\x0b\x62\xb2\xf3\x01\x15\x17\xf9\xc7\x36\x9d\x24\x9e\x37\x51\x32\xd4\x7c\xd6\xe9\x70\x31\x81\x4c\x32\x6b\xd3\xc0\x97\x1c\x13\x0a\x4d\xb0\x88\xa8\xb7\x6b\xf4\x34\x80\xa6\x26\x28\x38\x14\xa3\xc2\x9d\x1e\x7d\x53\xdd\x7b\xa7\xa4\xd5\x1d\xed\xba\xc9\x62\x63\xd5\x97\x0c\x4b\x1e\x1e\x1e\x2d\x7c\xad\x6a\x54\x4c\xa1\x84\xe6\x37\xe4\x98\x33\x2a\xe1\x27\xba\x1b\xb4\x43\x9f\xa0\x50\xa3\x15\x3d\x80\xe7\x1b\xe3\x29\x68\x9b\xcd\xf3\x7e\x3c\x7f\x6b\x4e\x12\xc7\xe8\x8a\x99\x2b\xb6\x42\xf3\x1b\x52\x17\x88\x0a\xf9\x9a\x85\xb7\x31\xeb\x8b\x7e\xb9\x18\xbc\xd1\xd6\x51\xcb\x16\x03\x2f\x5c\x5a\x4b\x95\xbe\x10\xff\xf4\x39\x40\xad\x9c\x90\x8b\xb5\xeb\x26\x99\x46\x5c\x77\x13\x6f\xf2\xf3\xf0\xb2\xe9\xb5\x82\x1c\x1d\x78\x2e\xfc\x7d\xd4\x51\x02\x96\x3a\x0f\x39\xbc\x7c\xdc\x10\x1d\xd9\x51\x4f\x90\x66\x74\xe3\x98\xab\x2d\xa4\x29\x64\x4b\x86\xdf\xfd\xba\xd9\x6c\x6b\xb6\x84\x87\xf2\x39\xc4\x8b\xfb\x4a\xd0\xe6\x8d\xa6\x33\xdb\x0e\x3d\x67\x7e\xca\x8c\xda\x54\x04\x0b\x57\x74\x7b\x7e\x1e\x85\xd3\xf8\xe9\x75\xc2\x2a\x88\xef\xab\xed\x28\x7c\xf0\xf0\xd0\xf0\x0a\x8f\x8f\xc4\x3d\xdf\x84\xb2\xd0\xf3\x69\xf7\x0a\x34\x6a\xcf\x3a\xa2\xa9\x55\x6a\x75\x45\x23\xe9\xff\x80\x5c\x69\x77\xe6\xc7\xc5\x97\xda\xb6\xbc\xd3\x9f\x21\xea\x76\xf7\x9e\x31\xdb\x5a\x4b\xc4\x89\x2f\xa7\x35\x52\xc8\xc0\x77\xc1\xe0\xeb\xdb\x2c\xa7\x09\xb2\xe1\x0c\x12\xd6\xcd\xa3\xf9\x1d\x39\x12\xae\xa8\x87\xcd\xfd\xf8\xb6\xfe\x57\xe4\x68\xe2\xca\xe8\xd2\x57\x50\x56\x60\x76\x17\x0c\xde\x93\x78\x3e\x17\x81\x72\x9e\xa0\xb1\xfe\x0a\xf0\x79\xb2\xcf\x84\xb6\xb2\xb0\x72\xdf\x2d\x37\xfb\x1b\xcd\x20\x1a\xff\x4e\x07\x39\x83\x5d\x85\x19\x5a\xcb\xe8\xd3\x13\xb4\x18\xba\xaf\x2c\xfc\xc2\x26\xec\xa6\xbd\xf5\x2b\x59\x8f\x84\xb2\x7b\xcb\xe1\xd3\x1f\x07\x71\xcc\xc6\xec\x3e\x1a\x69\x3d\x92\xc8\x2a\x61\x9b\x6c\xfd\x5a\x2c\xc5\xd0\xc6\x63\x3f\x09\x67\x34\x16\x0e\x0f\xa3\xe3\x4e\xda\x3a\x16\x28\xb4\x4b\x95\xc9\x9a\xd3\x33\x45\x4a\xff\xba\xa8\x68\xf0\xf1\x79\x08\xb0\x3b\x44\xa9\xa7\x7b\x07\x40\xd1\x8a\x4e\x51\x50\xc5\x4f\x04\xaf\x99\x6c\xa6\x24\x0d\x61\x0b\x0a\x91\x93\xd9\x96\x80\xbf\xf4\xad\x30\x5e\x7d\x2a\xac\x86\x9c\xc4\xed\xbc\x4a\xe2\xf6\x7d\xf8\x5f\x00\x00\x00\xff\xff\x21\xaf\x29\x78\x30\x0a\x00\x00") +var _displayHtml = []byte( + "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x56\x59\x6f\xdc\xb6\x13\x7f\xcf\xa7\x98\x08\x30\x92\x18\x91\xf8\xb7" + + "\xfd\x0f\x9a\xba\xd2\x02\xa9\x6b\x34\x6e\x53\x27\x8d\xd3\x0b\x41\x1e\xb8\xe2\x48\xe2\x86\x22\x15\xce\x48\xeb\xed" + + "\x22\xdf\xbd\xa0\xb4\x97\xf7\x70\x93\xbe\x68\x77\x86\x33\xbf\x39\x38\x07\xd3\x87\x3f\xbc\xbe\x78\xf7\xd7\x9b\x4b" + + "\xa8\xb8\x36\xa3\x07\x69\xf8\x01\x23\x6d\x99\x45\x68\xa3\xd1\x03\x80\xb4\x42\xa9\xc2\x1f\x80\xb4\x46\x96\x90\x57" + + "\xd2\x13\x72\x16\xb5\x5c\xc4\xcf\xa3\xcd\xa3\x8a\xb9\x89\xf1\x53\xab\xbb\x2c\xfa\x33\xfe\xed\x45\x7c\xe1\xea\x46" + + "\xb2\x1e\x1b\x8c\x20\x77\x96\xd1\x72\x16\x5d\x5d\x66\xa8\x4a\xbc\xa3\x69\x65\x8d\x59\xd4\x69\x9c\x36\xce\xf3\x86" + + "\xf0\x54\x2b\xae\x32\x85\x9d\xce\x31\xee\x89\xa7\xa0\xad\x66\x2d\x4d\x4c\xb9\x34\x98\x9d\x2c\x81\x1e\xc6\x31\xbc" + + "\xab\x10\xe4\xd8\x75\x08\x67\xd0\x03\xb3\x2c\x09\x8e\xeb\x96\xf8\x18\x72\x57\x23\x14\xda\x13\x83\xb6\xc0\x15\x42" + + "\x88\xed\x3b\x90\x76\x06\x8e\x2b\xf4\x3d\xbd\xb4\x0d\x41\x69\xd0\x39\x96\x05\xa3\x3f\x0e\x2a\x84\x03\x64\x1c\x2f" + + "\xac\xb2\x66\x83\xa3\x0b\xf4\xac\x0b\x9d\x4b\x46\xe8\xa4\xd1\x4a\xb2\x76\x16\x3c\x52\x6b\x98\x52\x31\x48\x3d\x58" + + "\x3b\xfa\xbd\x73\x4c\xec\x65\xb3\x46\x32\xda\x7e\x04\x8f\x26\x8b\x88\x67\x06\xa9\x42\xe4\x08\x2a\x8f\x45\x16\x09" + + "\x51\xcb\xdb\x5c\xd9\x64\xbc\xd4\x0b\x44\xee\x6a\xb1\x62\x88\xb3\xe4\x2c\x79\x26\x72\xa2\x35\x2f\xa9\xb5\x4d\x72" + + "\xa2\x68\xd3\xf4\xcb\x77\xbf\xbc\x7a\x06\x54\xe9\x1a\xa4\x55\xf0\x16\xa9\x71\x56\x25\x13\x82\xc2\x79\xb8\xba\x7c" + + "\x0e\xd4\x36\xe1\x1a\xc0\x15\x0b\x61\x34\x58\xa3\x65\xea\x15\x6a\x54\x5a\xc2\xa7\x16\xbd\xc6\x8d\x44\x04\xe8\x3f" + + "\x5e\xbc\xbd\xbe\xba\xfe\xf1\x7c\x13\x54\x39\x24\xfb\x88\x61\xea\xfc\x47\xd0\x05\xcc\x5c\x0b\xe1\xa2\xfb\x0b\x68" + + "\x64\x89\xd0\x69\x09\x85\x36\x78\x2e\xc4\x1d\xb8\xf7\xba\x00\xc3\x70\x75\x09\xdf\x7e\x18\xb8\x00\x29\xe5\x5e\x37" + + "\x0c\xe4\xf3\x2c\x0a\xf5\x46\xe7\x42\x38\xa2\x64\x91\x9f\x90\x92\x50\xc4\xcf\xa8\xd2\x9d\x38\x4b\xbe\x49\x4e\xd7" + + "\x74\x9f\x8e\x09\x45\xa3\x54\x0c\x30\x5f\x83\xea\x87\x90\xc4\x49\xf2\xff\xe4\x74\x49\x1d\x40\x4c\x1f\xbe\x47\xab" + + "\x74\xf1\x61\x08\x27\x15\xcb\x26\x4a\xc7\x4e\xcd\x16\x32\x4a\x77\x90\x1b\x49\x94\x45\xa1\xe4\xa4\xb6\xe8\xa3\x95" + + "\x47\x1b\xa7\xde\x4d\x23\xe8\x6b\x22\x8b\x2a\xd4\x65\xc5\xe7\xa7\xff\x6b\x6e\x83\x51\xa5\xbb\xc5\xd5\xee\xaa\xac" + + "\x0e\xb6\x6d\x99\xb8\x56\xf1\xc9\xe9\xca\xd6\xb6\x44\x23\x2d\x1a\xe8\xbf\xb1\xc2\x42\xb6\x86\xef\xc8\xee\x91\x8e" + + "\x43\x80\xda\x96\x5b\x72\x00\xf7\x37\xc6\x5d\xd0\x21\x9a\xfb\xed\x84\xfc\xed\x18\x49\x59\x8e\x0d\x2e\x05\x07\xa2" + + "\xff\xc6\xc4\x5e\x37\xa8\x76\x34\x82\x8e\xdf\x65\x06\x76\x35\x7a\xe9\x88\x53\xc1\xd5\x28\x10\x57\x44\x2d\xfa\x15" + + "\xf9\x7b\x88\x01\x5a\xcb\xda\xac\x78\x6f\xfb\x60\x7a\x72\xd7\x8c\xd8\x67\x67\x7e\xd4\xf7\x5a\xe5\x88\x9f\x86\x5c" + + "\x84\x79\xb4\x48\x09\x90\xf3\x8c\x0a\x8e\x3e\xef\xf1\x6e\x7e\x14\x3a\xc8\x23\x25\x37\x2c\xb9\x25\xc8\x32\xc8\xd7" + + "\x19\x7e\xfd\xf3\x7e\xb5\x83\xd1\xce\x8f\x00\xcd\x7d\x88\x97\xb7\x8d\xf6\x48\x37\xce\xd9\x7b\xa0\x97\x99\x9f\x4a" + + "\x6f\xf7\x15\xc1\xca\x14\xe1\x17\xa0\x28\x69\xcb\x8d\x4e\xd8\x06\x09\x7d\x75\x18\x45\x8d\xe6\xf3\x3e\xaf\xf0\xf9" + + "\x73\x2a\x58\xed\x43\x59\xc9\x85\xb0\x37\x0a\x34\x19\xee\x3a\xb9\x70\x75\xed\xec\xb5\xac\xf1\xbf\x80\x5c\x3b\x7e" + + "\x11\xd6\xc5\x97\xea\x0e\x79\x4f\x6e\xd8\x6b\x5b\x3e\x7e\x72\x8f\xda\xc1\x5a\x42\xab\x42\x39\xed\x24\x25\x15\x7d" + + "\x17\x8c\xbe\xbe\xcd\x0a\xe7\x78\xcf\x1d\xa4\x72\xb1\x8f\x96\x33\xb2\xd4\x5c\xb5\xe3\x7e\x3e\xbe\x6a\xff\xd6\x05" + + "\x7a\xd1\x78\x57\x87\x0a\xca\x2b\xcc\x3f\x46\xa3\x37\xde\xd5\x17\x4b\x12\xe6\x73\xe8\xd0\x53\x18\x01\x21\x4e\xf9" + + "\x2f\xae\x6d\x31\xb6\xe6\xdd\xfa\x70\xf3\xa0\x5f\x44\x93\x5f\x5b\xf4\x33\x78\x6c\x31\x47\x22\xe9\x67\x7d\xbf\xad" + + "\x96\xee\x23\x82\x9f\x64\x27\x6f\x86\xa9\xdf\x98\xb6\xd4\x96\x9e\xac\x97\xcf\xe6\x3a\x10\x42\x4e\xe4\x6d\x52\x3a" + + "\x57\x1a\x94\x8d\xa6\x3e\xda\xc0\x13\x46\x8f\x49\x4c\xc2\x26\x9c\x89\x93\xe4\xe4\x24\x39\x5b\x50\x07\xd7\x42\x1c" + + "\xc3\x95\xcd\x4d\xab\x10\xa4\x31\xe1\x75\xd1\x68\x83\x6a\xe9\x02\x3c\x1e\xa3\x71\xd3\x27\x4f\xc1\x79\xd0\x0b\x41" + + "\x6d\x95\xee\xb4\x6a\xa5\xe9\xb7\x24\x81\x24\xb0\x88\x0a\xd5\x21\x87\xbf\xf4\xad\x30\xd9\x7e\x2a\x6c\xbb\x9c\x8a" + + "\x61\x5f\xa5\x62\x78\x1f\xfe\x13\x00\x00\xff\xff\x21\xaf\x29\x78\x30\x0a\x00\x00") func displayHtmlBytes() ([]byte, error) { return bindataRead( @@ -83,8 +129,8 @@ func displayHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "display.html", size: 2608, mode: os.FileMode(420), modTime: time.Unix(1441373785, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "display.html", size: 2608, md5checksum: "", mode: os.FileMode(436), modTime: time.Unix(1509896935, 0)} + a := &asset{bytes: bytes, info: info} return a, nil } @@ -100,14 +146,14 @@ func Asset(name string) ([]byte, error) { } return a.bytes, nil } - return nil, fmt.Errorf("Asset %s not found", name) + return nil, &os.PathError{Op: "open", Path: name, Err: os.ErrNotExist} } // 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) { + if err != nil { panic("asset: Asset(" + name + "): " + err.Error()) } @@ -126,7 +172,7 @@ func AssetInfo(name string) (os.FileInfo, error) { } return a.info, nil } - return nil, fmt.Errorf("AssetInfo %s not found", name) + return nil, &os.PathError{Op: "open", Path: name, Err: os.ErrNotExist} } // AssetNames returns the names of the assets. @@ -164,12 +210,12 @@ func AssetDir(name string) ([]string, error) { for _, p := range pathList { node = node.Children[p] if node == nil { - return nil, fmt.Errorf("Asset %s not found", name) + return nil, &os.PathError{Op: "open", Path: name, Err: os.ErrNotExist} } } } if node.Func != nil { - return nil, fmt.Errorf("Asset %s not found", name) + return nil, &os.PathError{Op: "open", Path: name, Err: os.ErrNotExist} } rv := make([]string, 0, len(node.Children)) for childName := range node.Children { @@ -179,58 +225,53 @@ func AssetDir(name string) ([]string, error) { } type bintree struct { - Func func() (*asset, error) + Func func() (*asset, error) Children map[string]*bintree } + var _bintree = &bintree{nil, map[string]*bintree{ - "display.html": &bintree{displayHtml, map[string]*bintree{ - }}, + "display.html": {displayHtml, map[string]*bintree{}}, }} // 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 + 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 + } + return os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) } // 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 + 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, "/")...)...) + cannonicalName := strings.Replace(name, "\\", "/", -1) + return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) } -