summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/elazarl/go-bindata-assetfs
diff options
context:
space:
mode:
authorThomas Boerger <thomas@webhippie.de>2016-11-29 17:26:36 +0100
committerLunny Xiao <xiaolunwen@gmail.com>2016-11-30 00:26:36 +0800
commitb6a95a8cb3d9e611caf1bb8c0d3ff773e00923d6 (patch)
tree2717811fd5b10ebaddccf3ab18070c7bc71afaec /vendor/github.com/elazarl/go-bindata-assetfs
parent4680c349ddea56e2a6a603c2d0a54bf2bb5bfe86 (diff)
downloadgitea-b6a95a8cb3d9e611caf1bb8c0d3ff773e00923d6.tar.gz
gitea-b6a95a8cb3d9e611caf1bb8c0d3ff773e00923d6.zip
Integrate public as bindata optionally (#293)
* Dropped unused codekit config * Integrated dynamic and static bindata for public * Ignore public bindata * Add a general generate make task * Integrated flexible public assets into web command * Updated vendoring, added all missiong govendor deps * Made the linter happy with the bindata and dynamic code * Moved public bindata definition to modules directory * Ignoring the new bindata path now * Updated to the new public modules import path * Updated public bindata command and drop the new prefix
Diffstat (limited to 'vendor/github.com/elazarl/go-bindata-assetfs')
-rw-r--r--vendor/github.com/elazarl/go-bindata-assetfs/LICENSE23
-rw-r--r--vendor/github.com/elazarl/go-bindata-assetfs/README.md46
-rw-r--r--vendor/github.com/elazarl/go-bindata-assetfs/assetfs.go158
-rw-r--r--vendor/github.com/elazarl/go-bindata-assetfs/doc.go13
4 files changed, 240 insertions, 0 deletions
diff --git a/vendor/github.com/elazarl/go-bindata-assetfs/LICENSE b/vendor/github.com/elazarl/go-bindata-assetfs/LICENSE
new file mode 100644
index 0000000000..5782c72690
--- /dev/null
+++ b/vendor/github.com/elazarl/go-bindata-assetfs/LICENSE
@@ -0,0 +1,23 @@
+Copyright (c) 2014, Elazar Leibovich
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/github.com/elazarl/go-bindata-assetfs/README.md b/vendor/github.com/elazarl/go-bindata-assetfs/README.md
new file mode 100644
index 0000000000..27ee48f09d
--- /dev/null
+++ b/vendor/github.com/elazarl/go-bindata-assetfs/README.md
@@ -0,0 +1,46 @@
+# go-bindata-assetfs
+
+Serve embedded files from [jteeuwen/go-bindata](https://github.com/jteeuwen/go-bindata) with `net/http`.
+
+[GoDoc](http://godoc.org/github.com/elazarl/go-bindata-assetfs)
+
+### Installation
+
+Install with
+
+ $ go get github.com/jteeuwen/go-bindata/...
+ $ go get github.com/elazarl/go-bindata-assetfs/...
+
+### Creating embedded data
+
+Usage is identical to [jteeuwen/go-bindata](https://github.com/jteeuwen/go-bindata) usage,
+instead of running `go-bindata` run `go-bindata-assetfs`.
+
+The tool will create a `bindata_assetfs.go` file, which contains the embedded data.
+
+A typical use case is
+
+ $ go-bindata-assetfs data/...
+
+### Using assetFS in your code
+
+The generated file provides an `assetFS()` function that returns a `http.Filesystem`
+wrapping the embedded files. What you usually want to do is:
+
+ http.Handle("/", http.FileServer(assetFS()))
+
+This would run an HTTP server serving the embedded files.
+
+## Without running binary tool
+
+You can always just run the `go-bindata` tool, and then
+
+use
+
+ import "github.com/elazarl/go-bindata-assetfs"
+ ...
+ http.Handle("/",
+ http.FileServer(
+ &assetfs.AssetFS{Asset: Asset, AssetDir: AssetDir, AssetInfo: AssetInfo, Prefix: "data"}))
+
+to serve files embedded from the `data` directory.
diff --git a/vendor/github.com/elazarl/go-bindata-assetfs/assetfs.go b/vendor/github.com/elazarl/go-bindata-assetfs/assetfs.go
new file mode 100644
index 0000000000..9397e58d52
--- /dev/null
+++ b/vendor/github.com/elazarl/go-bindata-assetfs/assetfs.go
@@ -0,0 +1,158 @@
+package assetfs
+
+import (
+ "bytes"
+ "errors"
+ "io"
+ "io/ioutil"
+ "net/http"
+ "os"
+ "path"
+ "path/filepath"
+ "time"
+)
+
+var (
+ defaultFileTimestamp = time.Now()
+)
+
+// FakeFile implements os.FileInfo interface for a given path and size
+type FakeFile struct {
+ // Path is the path of this file
+ Path string
+ // Dir marks of the path is a directory
+ Dir bool
+ // Len is the length of the fake file, zero if it is a directory
+ Len int64
+ // Timestamp is the ModTime of this file
+ Timestamp time.Time
+}
+
+func (f *FakeFile) Name() string {
+ _, name := filepath.Split(f.Path)
+ return name
+}
+
+func (f *FakeFile) Mode() os.FileMode {
+ mode := os.FileMode(0644)
+ if f.Dir {
+ return mode | os.ModeDir
+ }
+ return mode
+}
+
+func (f *FakeFile) ModTime() time.Time {
+ return f.Timestamp
+}
+
+func (f *FakeFile) Size() int64 {
+ return f.Len
+}
+
+func (f *FakeFile) IsDir() bool {
+ return f.Mode().IsDir()
+}
+
+func (f *FakeFile) Sys() interface{} {
+ return nil
+}
+
+// AssetFile implements http.File interface for a no-directory file with content
+type AssetFile struct {
+ *bytes.Reader
+ io.Closer
+ FakeFile
+}
+
+func NewAssetFile(name string, content []byte, timestamp time.Time) *AssetFile {
+ if timestamp.IsZero() {
+ timestamp = defaultFileTimestamp
+ }
+ return &AssetFile{
+ bytes.NewReader(content),
+ ioutil.NopCloser(nil),
+ FakeFile{name, false, int64(len(content)), timestamp}}
+}
+
+func (f *AssetFile) Readdir(count int) ([]os.FileInfo, error) {
+ return nil, errors.New("not a directory")
+}
+
+func (f *AssetFile) Size() int64 {
+ return f.FakeFile.Size()
+}
+
+func (f *AssetFile) Stat() (os.FileInfo, error) {
+ return f, nil
+}
+
+// AssetDirectory implements http.File interface for a directory
+type AssetDirectory struct {
+ AssetFile
+ ChildrenRead int
+ Children []os.FileInfo
+}
+
+func NewAssetDirectory(name string, children []string, fs *AssetFS) *AssetDirectory {
+ fileinfos := make([]os.FileInfo, 0, len(children))
+ for _, child := range children {
+ _, err := fs.AssetDir(filepath.Join(name, child))
+ fileinfos = append(fileinfos, &FakeFile{child, err == nil, 0, time.Time{}})
+ }
+ return &AssetDirectory{
+ AssetFile{
+ bytes.NewReader(nil),
+ ioutil.NopCloser(nil),
+ FakeFile{name, true, 0, time.Time{}},
+ },
+ 0,
+ fileinfos}
+}
+
+func (f *AssetDirectory) Readdir(count int) ([]os.FileInfo, error) {
+ if count <= 0 {
+ return f.Children, nil
+ }
+ if f.ChildrenRead+count > len(f.Children) {
+ count = len(f.Children) - f.ChildrenRead
+ }
+ rv := f.Children[f.ChildrenRead : f.ChildrenRead+count]
+ f.ChildrenRead += count
+ return rv, nil
+}
+
+func (f *AssetDirectory) Stat() (os.FileInfo, error) {
+ return f, nil
+}
+
+// AssetFS implements http.FileSystem, allowing
+// embedded files to be served from net/http package.
+type AssetFS struct {
+ // Asset should return content of file in path if exists
+ Asset func(path string) ([]byte, error)
+ // AssetDir should return list of files in the path
+ AssetDir func(path string) ([]string, error)
+ // AssetInfo should return the info of file in path if exists
+ AssetInfo func(path string) (os.FileInfo, error)
+ // Prefix would be prepended to http requests
+ Prefix string
+}
+
+func (fs *AssetFS) Open(name string) (http.File, error) {
+ name = path.Join(fs.Prefix, name)
+ if len(name) > 0 && name[0] == '/' {
+ name = name[1:]
+ }
+ if b, err := fs.Asset(name); err == nil {
+ timestamp := defaultFileTimestamp
+ if info, err := fs.AssetInfo(name); err == nil {
+ timestamp = info.ModTime()
+ }
+ return NewAssetFile(name, b, timestamp), nil
+ }
+ if children, err := fs.AssetDir(name); err == nil {
+ return NewAssetDirectory(name, children, fs), nil
+ } else {
+ return nil, err
+ }
+}
diff --git a/vendor/github.com/elazarl/go-bindata-assetfs/doc.go b/vendor/github.com/elazarl/go-bindata-assetfs/doc.go
new file mode 100644
index 0000000000..a664249f34
--- /dev/null
+++ b/vendor/github.com/elazarl/go-bindata-assetfs/doc.go
@@ -0,0 +1,13 @@
+// assetfs allows packages to serve static content embedded
+// with the go-bindata tool with the standard net/http package.
+//
+// See https://github.com/jteeuwen/go-bindata for more information
+// about embedding binary data with go-bindata.
+//
+// Usage example, after running
+// $ go-bindata data/...
+// use:
+// http.Handle("/",
+// http.FileServer(
+// &assetfs.AssetFS{Asset: Asset, AssetDir: AssetDir, Prefix: "data"}))
+package assetfs