aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/shurcooL/httpfs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/shurcooL/httpfs')
-rw-r--r--vendor/github.com/shurcooL/httpfs/filter/filter.go133
-rw-r--r--vendor/github.com/shurcooL/httpfs/filter/filters.go26
-rw-r--r--vendor/github.com/shurcooL/httpfs/vfsutil/file.go21
-rw-r--r--vendor/github.com/shurcooL/httpfs/vfsutil/vfsutil.go39
-rw-r--r--vendor/github.com/shurcooL/httpfs/vfsutil/walk.go146
5 files changed, 0 insertions, 365 deletions
diff --git a/vendor/github.com/shurcooL/httpfs/filter/filter.go b/vendor/github.com/shurcooL/httpfs/filter/filter.go
deleted file mode 100644
index 6f03e597..00000000
--- a/vendor/github.com/shurcooL/httpfs/filter/filter.go
+++ /dev/null
@@ -1,133 +0,0 @@
-// Package filter offers an http.FileSystem wrapper with the ability to keep or skip files.
-package filter
-
-import (
- "fmt"
- "io"
- "net/http"
- "os"
- pathpkg "path"
- "time"
-)
-
-// Func is a selection function which is provided two arguments,
-// its '/'-separated cleaned rooted absolute path (i.e., it always begins with "/"),
-// and the os.FileInfo of the considered file.
-//
-// The path is cleaned via pathpkg.Clean("/" + path).
-//
-// For example, if the considered file is named "a" and it's inside a directory "dir",
-// then the value of path will be "/dir/a".
-type Func func(path string, fi os.FileInfo) bool
-
-// Keep returns a filesystem that contains only those entries in source for which
-// keep returns true.
-func Keep(source http.FileSystem, keep Func) http.FileSystem {
- return &filterFS{source: source, keep: keep}
-}
-
-// Skip returns a filesystem that contains everything in source, except entries
-// for which skip returns true.
-func Skip(source http.FileSystem, skip Func) http.FileSystem {
- keep := func(path string, fi os.FileInfo) bool {
- return !skip(path, fi)
- }
- return &filterFS{source: source, keep: keep}
-}
-
-type filterFS struct {
- source http.FileSystem
- keep Func // Keep entries that keep returns true for.
-}
-
-func (fs *filterFS) Open(path string) (http.File, error) {
- f, err := fs.source.Open(path)
- if err != nil {
- return nil, err
- }
-
- fi, err := f.Stat()
- if err != nil {
- f.Close()
- return nil, err
- }
-
- if !fs.keep(clean(path), fi) {
- // Skip.
- f.Close()
- return nil, &os.PathError{Op: "open", Path: path, Err: os.ErrNotExist}
- }
-
- if !fi.IsDir() {
- return f, nil
- }
- defer f.Close()
-
- fis, err := f.Readdir(0)
- if err != nil {
- return nil, err
- }
-
- var entries []os.FileInfo
- for _, fi := range fis {
- if !fs.keep(clean(pathpkg.Join(path, fi.Name())), fi) {
- // Skip.
- continue
- }
- entries = append(entries, fi)
- }
-
- return &dir{
- name: fi.Name(),
- entries: entries,
- modTime: fi.ModTime(),
- }, nil
-}
-
-// clean turns a potentially relative path into an absolute one.
-//
-// This is needed to normalize path parameter for selection function.
-func clean(path string) string {
- return pathpkg.Clean("/" + path)
-}
-
-// dir is an opened dir instance.
-type dir struct {
- name string
- modTime time.Time
- entries []os.FileInfo
- pos int // Position within entries for Seek and Readdir.
-}
-
-func (d *dir) Read([]byte) (int, error) {
- return 0, fmt.Errorf("cannot Read from directory %s", d.name)
-}
-func (d *dir) Close() error { return nil }
-func (d *dir) Stat() (os.FileInfo, error) { return d, nil }
-
-func (d *dir) Name() string { return d.name }
-func (d *dir) Size() int64 { return 0 }
-func (d *dir) Mode() os.FileMode { return 0755 | os.ModeDir }
-func (d *dir) ModTime() time.Time { return d.modTime }
-func (d *dir) IsDir() bool { return true }
-func (d *dir) Sys() interface{} { return nil }
-
-func (d *dir) Seek(offset int64, whence int) (int64, error) {
- if offset == 0 && whence == io.SeekStart {
- d.pos = 0
- return 0, nil
- }
- return 0, fmt.Errorf("unsupported Seek in directory %s", d.name)
-}
-
-func (d *dir) Readdir(count int) ([]os.FileInfo, error) {
- if d.pos >= len(d.entries) && count > 0 {
- return nil, io.EOF
- }
- if count <= 0 || count > len(d.entries)-d.pos {
- count = len(d.entries) - d.pos
- }
- e := d.entries[d.pos : d.pos+count]
- d.pos += count
- return e, nil
-}
diff --git a/vendor/github.com/shurcooL/httpfs/filter/filters.go b/vendor/github.com/shurcooL/httpfs/filter/filters.go
deleted file mode 100644
index a20edaf4..00000000
--- a/vendor/github.com/shurcooL/httpfs/filter/filters.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package filter
-
-import (
- "os"
- pathpkg "path"
-)
-
-// FilesWithExtensions returns a filter func that selects files (but not directories)
-// that have any of the given extensions. For example:
-//
-// filter.FilesWithExtensions(".go", ".html")
-//
-// Would select both .go and .html files. It would not select any directories.
-func FilesWithExtensions(exts ...string) Func {
- return func(path string, fi os.FileInfo) bool {
- if fi.IsDir() {
- return false
- }
- for _, ext := range exts {
- if pathpkg.Ext(path) == ext {
- return true
- }
- }
- return false
- }
-}
diff --git a/vendor/github.com/shurcooL/httpfs/vfsutil/file.go b/vendor/github.com/shurcooL/httpfs/vfsutil/file.go
deleted file mode 100644
index 4cb0dada..00000000
--- a/vendor/github.com/shurcooL/httpfs/vfsutil/file.go
+++ /dev/null
@@ -1,21 +0,0 @@
-package vfsutil
-
-import (
- "net/http"
- "os"
-)
-
-// File implements http.FileSystem using the native file system restricted to a
-// specific file served at root.
-//
-// While the FileSystem.Open method takes '/'-separated paths, a File's string
-// value is a filename on the native file system, not a URL, so it is separated
-// by filepath.Separator, which isn't necessarily '/'.
-type File string
-
-func (f File) Open(name string) (http.File, error) {
- if name != "/" {
- return nil, &os.PathError{Op: "open", Path: name, Err: os.ErrNotExist}
- }
- return os.Open(string(f))
-}
diff --git a/vendor/github.com/shurcooL/httpfs/vfsutil/vfsutil.go b/vendor/github.com/shurcooL/httpfs/vfsutil/vfsutil.go
deleted file mode 100644
index df071d11..00000000
--- a/vendor/github.com/shurcooL/httpfs/vfsutil/vfsutil.go
+++ /dev/null
@@ -1,39 +0,0 @@
-// Package vfsutil implements some I/O utility functions for http.FileSystem.
-package vfsutil
-
-import (
- "io/ioutil"
- "net/http"
- "os"
-)
-
-// ReadDir reads the contents of the directory associated with file and
-// returns a slice of FileInfo values in directory order.
-func ReadDir(fs http.FileSystem, name string) ([]os.FileInfo, error) {
- f, err := fs.Open(name)
- if err != nil {
- return nil, err
- }
- defer f.Close()
- return f.Readdir(0)
-}
-
-// Stat returns the FileInfo structure describing file.
-func Stat(fs http.FileSystem, name string) (os.FileInfo, error) {
- f, err := fs.Open(name)
- if err != nil {
- return nil, err
- }
- defer f.Close()
- return f.Stat()
-}
-
-// ReadFile reads the file named by path from fs and returns the contents.
-func ReadFile(fs http.FileSystem, path string) ([]byte, error) {
- rc, err := fs.Open(path)
- if err != nil {
- return nil, err
- }
- defer rc.Close()
- return ioutil.ReadAll(rc)
-}
diff --git a/vendor/github.com/shurcooL/httpfs/vfsutil/walk.go b/vendor/github.com/shurcooL/httpfs/vfsutil/walk.go
deleted file mode 100644
index f256bbec..00000000
--- a/vendor/github.com/shurcooL/httpfs/vfsutil/walk.go
+++ /dev/null
@@ -1,146 +0,0 @@
-package vfsutil
-
-import (
- "io"
- "net/http"
- "os"
- pathpkg "path"
- "path/filepath"
- "sort"
-)
-
-// Walk walks the filesystem rooted at root, calling walkFn for each file or
-// directory in the filesystem, including root. All errors that arise visiting files
-// and directories are filtered by walkFn. The files are walked in lexical
-// order.
-func Walk(fs http.FileSystem, root string, walkFn filepath.WalkFunc) error {
- info, err := Stat(fs, root)
- if err != nil {
- return walkFn(root, nil, err)
- }
- return walk(fs, root, info, walkFn)
-}
-
-// readDirNames reads the directory named by dirname and returns
-// a sorted list of directory entries.
-func readDirNames(fs http.FileSystem, dirname string) ([]string, error) {
- fis, err := ReadDir(fs, dirname)
- if err != nil {
- return nil, err
- }
- names := make([]string, len(fis))
- for i := range fis {
- names[i] = fis[i].Name()
- }
- sort.Strings(names)
- return names, nil
-}
-
-// walk recursively descends path, calling walkFn.
-func walk(fs http.FileSystem, path string, info os.FileInfo, walkFn filepath.WalkFunc) error {
- err := walkFn(path, info, nil)
- if err != nil {
- if info.IsDir() && err == filepath.SkipDir {
- return nil
- }
- return err
- }
-
- if !info.IsDir() {
- return nil
- }
-
- names, err := readDirNames(fs, path)
- if err != nil {
- return walkFn(path, info, err)
- }
-
- for _, name := range names {
- filename := pathpkg.Join(path, name)
- fileInfo, err := Stat(fs, filename)
- if err != nil {
- if err := walkFn(filename, fileInfo, err); err != nil && err != filepath.SkipDir {
- return err
- }
- } else {
- err = walk(fs, filename, fileInfo, walkFn)
- if err != nil {
- if !fileInfo.IsDir() || err != filepath.SkipDir {
- return err
- }
- }
- }
- }
- return nil
-}
-
-// WalkFilesFunc is the type of the function called for each file or directory visited by WalkFiles.
-// It's like filepath.WalkFunc, except it provides an additional ReadSeeker parameter for file being visited.
-type WalkFilesFunc func(path string, info os.FileInfo, rs io.ReadSeeker, err error) error
-
-// WalkFiles walks the filesystem rooted at root, calling walkFn for each file or
-// directory in the filesystem, including root. In addition to FileInfo, it passes an
-// ReadSeeker to walkFn for each file it visits.
-func WalkFiles(fs http.FileSystem, root string, walkFn WalkFilesFunc) error {
- file, info, err := openStat(fs, root)
- if err != nil {
- return walkFn(root, nil, nil, err)
- }
- return walkFiles(fs, root, info, file, walkFn)
-}
-
-// walkFiles recursively descends path, calling walkFn.
-// It closes the input file after it's done with it, so the caller shouldn't.
-func walkFiles(fs http.FileSystem, path string, info os.FileInfo, file http.File, walkFn WalkFilesFunc) error {
- err := walkFn(path, info, file, nil)
- file.Close()
- if err != nil {
- if info.IsDir() && err == filepath.SkipDir {
- return nil
- }
- return err
- }
-
- if !info.IsDir() {
- return nil
- }
-
- names, err := readDirNames(fs, path)
- if err != nil {
- return walkFn(path, info, nil, err)
- }
-
- for _, name := range names {
- filename := pathpkg.Join(path, name)
- file, fileInfo, err := openStat(fs, filename)
- if err != nil {
- if err := walkFn(filename, nil, nil, err); err != nil && err != filepath.SkipDir {
- return err
- }
- } else {
- err = walkFiles(fs, filename, fileInfo, file, walkFn)
- // file is closed by walkFiles, so we don't need to close it here.
- if err != nil {
- if !fileInfo.IsDir() || err != filepath.SkipDir {
- return err
- }
- }
- }
- }
- return nil
-}
-
-// openStat performs Open and Stat and returns results, or first error encountered.
-// The caller is responsible for closing the returned file when done.
-func openStat(fs http.FileSystem, name string) (http.File, os.FileInfo, error) {
- f, err := fs.Open(name)
- if err != nil {
- return nil, nil, err
- }
- fi, err := f.Stat()
- if err != nil {
- f.Close()
- return nil, nil, err
- }
- return f, fi, nil
-}