forked from mirror/pkger
the wheel
This commit is contained in:
parent
1154513c57
commit
a1787a9901
|
@ -1,5 +1,4 @@
|
|||
default:
|
||||
go get github.com/markbates/pkger/cmd/pkger
|
||||
pkger
|
||||
GOOS=linux go build -v -o example
|
||||
docker build -t pkger:example .
|
||||
|
|
|
@ -14,9 +14,6 @@ func main() {
|
|||
}
|
||||
|
||||
func run() error {
|
||||
dir, err := pkger.HTTP("/public")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
dir := http.FileServer(pkger.Dir("/public"))
|
||||
return http.ListenAndServe(":3000", dir)
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ func (d HTTPDecl) String() string {
|
|||
|
||||
func (d HTTPDecl) MarshalJSON() ([]byte, error) {
|
||||
return json.Marshal(map[string]interface{}{
|
||||
"type": "pkger.HTTP",
|
||||
"type": "pkger.Dir",
|
||||
"file": d.file,
|
||||
"pos": d.pos,
|
||||
"value": d.value,
|
||||
|
|
|
@ -286,7 +286,7 @@ func (f *file) findHTTPCalls() error {
|
|||
return true
|
||||
}
|
||||
|
||||
exists := isPkgDot(ce.Fun, "pkger", "HTTP")
|
||||
exists := isPkgDot(ce.Fun, "pkger", "Dir")
|
||||
if !(exists) || len(ce.Args) != 1 {
|
||||
return true
|
||||
}
|
||||
|
|
19
pkger.go
19
pkger.go
|
@ -36,6 +36,16 @@ func impl() pkging.Pkger {
|
|||
return current
|
||||
}
|
||||
|
||||
type Dir string
|
||||
|
||||
func (d Dir) Open(name string) (http.File, error) {
|
||||
f, err := Open(string(d))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return f.Open(name)
|
||||
}
|
||||
|
||||
// Parse the string in here.Path format.
|
||||
func Parse(p string) (here.Path, error) {
|
||||
return impl().Parse(p)
|
||||
|
@ -95,12 +105,3 @@ func Remove(name string) error {
|
|||
func RemoveAll(name string) error {
|
||||
return impl().RemoveAll(name)
|
||||
}
|
||||
|
||||
// HTTP returns an http.FileServer for the specified path.
|
||||
func HTTP(p string) (http.Handler, error) {
|
||||
f, err := Open(p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return http.FileServer(f), nil
|
||||
}
|
||||
|
|
|
@ -1,85 +0,0 @@
|
|||
package mem_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/markbates/pkger/parser"
|
||||
"github.com/markbates/pkger/pkging/mem"
|
||||
"github.com/markbates/pkger/pkging/pkgtest"
|
||||
"github.com/markbates/pkger/pkging/pkgutil"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func Test_Pkger_Embedding(t *testing.T) {
|
||||
r := require.New(t)
|
||||
|
||||
app, err := pkgtest.App()
|
||||
r.NoError(err)
|
||||
|
||||
res, err := parser.Parse(app.Info)
|
||||
r.NoError(err)
|
||||
|
||||
files, err := res.Files()
|
||||
r.NoError(err)
|
||||
|
||||
ps := make([]string, len(files))
|
||||
for i, f := range files {
|
||||
ps[i] = f.Path.String()
|
||||
}
|
||||
|
||||
r.Equal(app.Paths.Parser, ps)
|
||||
|
||||
base, err := mem.New(app.Info)
|
||||
r.NoError(err)
|
||||
|
||||
err = filepath.Walk(app.Info.Dir, func(path string, info os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
f, err := os.Open(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer f.Close()
|
||||
return base.Add(f)
|
||||
|
||||
})
|
||||
r.NoError(err)
|
||||
|
||||
act := []string{}
|
||||
err = base.Walk("/public", func(path string, info os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
act = append(act, path)
|
||||
return nil
|
||||
})
|
||||
|
||||
r.NoError(err)
|
||||
r.Equal(app.Paths.Public, act)
|
||||
|
||||
bb := &bytes.Buffer{}
|
||||
|
||||
err = pkgutil.Stuff(bb, app.Info, res)
|
||||
r.NoError(err)
|
||||
|
||||
pkg := &mem.Pkger{}
|
||||
err = pkg.UnmarshalEmbed(bb.Bytes())
|
||||
r.NoError(err)
|
||||
|
||||
act = []string{}
|
||||
err = pkg.Walk("/public", func(path string, info os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
act = append(act, path)
|
||||
return nil
|
||||
})
|
||||
|
||||
r.NoError(err)
|
||||
r.Equal(app.Paths.Public, act)
|
||||
}
|
Loading…
Reference in New Issue