forked from mirror/pkger
Merge pull request #50 from markbates/here-here
use gobuffalo/here fixes #49
This commit is contained in:
commit
c5e820d039
|
@ -0,0 +1,4 @@
|
||||||
|
# These are supported funding model platforms
|
||||||
|
|
||||||
|
github: markbates
|
||||||
|
patreon: buffalo
|
|
@ -16,7 +16,7 @@ jobs:
|
||||||
go-version: 1.13
|
go-version: 1.13
|
||||||
id: go
|
id: go
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout Code
|
||||||
uses: actions/checkout@master
|
uses: actions/checkout@master
|
||||||
-
|
-
|
||||||
name: Run GoReleaser
|
name: Run GoReleaser
|
||||||
|
|
|
@ -8,8 +8,8 @@ import (
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger"
|
"github.com/markbates/pkger"
|
||||||
"github.com/markbates/pkger/here"
|
|
||||||
"github.com/markbates/pkger/parser"
|
"github.com/markbates/pkger/parser"
|
||||||
"github.com/markbates/pkger/pkging/pkgutil"
|
"github.com/markbates/pkger/pkging/pkgutil"
|
||||||
)
|
)
|
||||||
|
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"flag"
|
"flag"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/parser"
|
"github.com/markbates/pkger/parser"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -6,8 +6,8 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger"
|
"github.com/markbates/pkger"
|
||||||
"github.com/markbates/pkger/here"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type pathCmd struct {
|
type pathCmd struct {
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/gobuffalo/here v0.5.2-0.20191203194143-8e97fc9ad6d3 h1:9NGxHWbGFujaZ5vT+uXurb9m3QoWa175cYM2Qs97nQo=
|
||||||
|
github.com/gobuffalo/here v0.5.2-0.20191203194143-8e97fc9ad6d3/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM=
|
||||||
|
github.com/gobuffalo/here v0.6.0 h1:hYrd0a6gDmWxBM4TnrGw8mQg24iSVoIkHEk7FodQcBI=
|
||||||
|
github.com/gobuffalo/here v0.6.0/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM=
|
||||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
@ -19,3 +23,4 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
|
gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
|
||||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
|
5
go.mod
5
go.mod
|
@ -3,9 +3,6 @@ module github.com/markbates/pkger
|
||||||
go 1.13
|
go 1.13
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/gobuffalo/here v0.6.0
|
||||||
github.com/kr/pretty v0.1.0 // indirect
|
|
||||||
github.com/stretchr/testify v1.4.0
|
github.com/stretchr/testify v1.4.0
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
|
|
||||||
gopkg.in/yaml.v2 v2.2.5 // indirect
|
|
||||||
)
|
)
|
||||||
|
|
7
go.sum
7
go.sum
|
@ -1,6 +1,8 @@
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/gobuffalo/here v0.6.0 h1:hYrd0a6gDmWxBM4TnrGw8mQg24iSVoIkHEk7FodQcBI=
|
||||||
|
github.com/gobuffalo/here v0.6.0/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM=
|
||||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
@ -15,7 +17,6 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
|
||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.5 h1:ymVxjfMaHvXD8RqPRmzHHsB3VvucivSkIAvJFDI5O3c=
|
gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo=
|
||||||
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
package here
|
|
||||||
|
|
||||||
import (
|
|
||||||
"path/filepath"
|
|
||||||
"sync"
|
|
||||||
)
|
|
||||||
|
|
||||||
var curOnce sync.Once
|
|
||||||
var curErr error
|
|
||||||
var current Info
|
|
||||||
|
|
||||||
func Current() (Info, error) {
|
|
||||||
(&curOnce).Do(func() {
|
|
||||||
b, err := run("go", "env", "GOMOD")
|
|
||||||
if err != nil {
|
|
||||||
curErr = err
|
|
||||||
return
|
|
||||||
}
|
|
||||||
root := filepath.Dir(string(b))
|
|
||||||
i, err := Dir(root)
|
|
||||||
if err != nil {
|
|
||||||
curErr = err
|
|
||||||
return
|
|
||||||
}
|
|
||||||
current = i
|
|
||||||
})
|
|
||||||
|
|
||||||
return current, curErr
|
|
||||||
}
|
|
77
here/dir.go
77
here/dir.go
|
@ -1,77 +0,0 @@
|
||||||
package here
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Dir attempts to gather info for the requested directory.
|
|
||||||
func Dir(p string) (Info, error) {
|
|
||||||
i, err := Cache(p, func(p string) (Info, error) {
|
|
||||||
var i Info
|
|
||||||
|
|
||||||
fi, err := os.Stat(p)
|
|
||||||
if err != nil {
|
|
||||||
return i, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if !fi.IsDir() {
|
|
||||||
p = filepath.Dir(p)
|
|
||||||
}
|
|
||||||
|
|
||||||
pwd, err := os.Getwd()
|
|
||||||
if err != nil {
|
|
||||||
return i, err
|
|
||||||
}
|
|
||||||
|
|
||||||
defer os.Chdir(pwd)
|
|
||||||
|
|
||||||
os.Chdir(p)
|
|
||||||
|
|
||||||
b, err := run("go", "list", "-json")
|
|
||||||
// go: cannot find main module; see 'go help modules'
|
|
||||||
// build .: cannot find module for path .
|
|
||||||
// no Go files in
|
|
||||||
if err != nil {
|
|
||||||
if nonGoDirRx.MatchString(err.Error()) {
|
|
||||||
return fromNonGoDir(p)
|
|
||||||
}
|
|
||||||
return i, fmt.Errorf("%w %s", err, p)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := json.Unmarshal(b, &i); err != nil {
|
|
||||||
return i, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return i, nil
|
|
||||||
})
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return i, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return Cache(i.ImportPath, func(p string) (Info, error) {
|
|
||||||
return i, nil
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func fromNonGoDir(dir string) (Info, error) {
|
|
||||||
i := Info{
|
|
||||||
Dir: dir,
|
|
||||||
Name: filepath.Base(dir),
|
|
||||||
}
|
|
||||||
|
|
||||||
b, err := run("go", "list", "-json", "-m")
|
|
||||||
if err != nil {
|
|
||||||
return i, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := json.Unmarshal(b, &i.Module); err != nil {
|
|
||||||
return i, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return i, err
|
|
||||||
}
|
|
|
@ -1,67 +0,0 @@
|
||||||
package here_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
|
||||||
"github.com/markbates/pkger/pkging/pkgtest"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Test_Dir(t *testing.T) {
|
|
||||||
r := require.New(t)
|
|
||||||
|
|
||||||
ref, err := pkgtest.NewRef()
|
|
||||||
r.NoError(err)
|
|
||||||
|
|
||||||
root := ref.Dir
|
|
||||||
|
|
||||||
r.NoError(err)
|
|
||||||
defer os.RemoveAll(root)
|
|
||||||
|
|
||||||
public := filepath.Join(root, "public")
|
|
||||||
r.NoError(os.MkdirAll(public, 0755))
|
|
||||||
|
|
||||||
gf := filepath.Join(root, "cmd", "main.go")
|
|
||||||
r.NoError(os.MkdirAll(filepath.Dir(gf), 0755))
|
|
||||||
|
|
||||||
f, err := os.Create(gf)
|
|
||||||
r.NoError(err)
|
|
||||||
|
|
||||||
_, err = f.Write([]byte("package main"))
|
|
||||||
r.NoError(err)
|
|
||||||
|
|
||||||
r.NoError(f.Close())
|
|
||||||
|
|
||||||
table := []struct {
|
|
||||||
in string
|
|
||||||
err bool
|
|
||||||
}{
|
|
||||||
{in: root, err: false},
|
|
||||||
{in: public, err: false},
|
|
||||||
{in: gf, err: false},
|
|
||||||
{in: filepath.Join(root, "."), err: false},
|
|
||||||
{in: "/unknown", err: true},
|
|
||||||
}
|
|
||||||
for _, tt := range table {
|
|
||||||
t.Run(tt.in, func(st *testing.T) {
|
|
||||||
here.ClearCache()
|
|
||||||
r := require.New(st)
|
|
||||||
|
|
||||||
info, err := here.Dir(tt.in)
|
|
||||||
if tt.err {
|
|
||||||
r.Error(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
r.NoError(err)
|
|
||||||
|
|
||||||
r.NotZero(info)
|
|
||||||
r.NotZero(info.Dir)
|
|
||||||
r.NotZero(info.Name)
|
|
||||||
r.NotZero(info.Module)
|
|
||||||
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
50
here/here.go
50
here/here.go
|
@ -1,49 +1,13 @@
|
||||||
package here
|
package here
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"github.com/gobuffalo/here"
|
||||||
"fmt"
|
|
||||||
"os/exec"
|
|
||||||
"regexp"
|
|
||||||
"strings"
|
|
||||||
"sync"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var cache = &infoMap{
|
type Info = here.Info
|
||||||
data: &sync.Map{},
|
type Module = here.Module
|
||||||
}
|
type Path = here.Path
|
||||||
|
|
||||||
func run(n string, args ...string) ([]byte, error) {
|
var Dir = here.Dir
|
||||||
c := exec.Command(n, args...)
|
var Package = here.Package
|
||||||
|
var Current = here.Current
|
||||||
bb := &bytes.Buffer{}
|
|
||||||
c.Stdout = bb
|
|
||||||
c.Stderr = bb
|
|
||||||
err := c.Run()
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("%w: %q: %s", err, strings.Join(c.Args, " "), bb)
|
|
||||||
}
|
|
||||||
|
|
||||||
return bb.Bytes(), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func Cache(p string, fn func(string) (Info, error)) (Info, error) {
|
|
||||||
i, ok := cache.Load(p)
|
|
||||||
if ok {
|
|
||||||
return i, nil
|
|
||||||
}
|
|
||||||
i, err := fn(p)
|
|
||||||
if err != nil {
|
|
||||||
return i, err
|
|
||||||
}
|
|
||||||
cache.Store(p, i)
|
|
||||||
return i, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func ClearCache() {
|
|
||||||
cache = &infoMap{
|
|
||||||
data: &sync.Map{},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var nonGoDirRx = regexp.MustCompile(`cannot find main|go help modules|go: |build .:|no Go files|can't load package`)
|
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
package here
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Test_nonGoDirRx(t *testing.T) {
|
|
||||||
r := require.New(t)
|
|
||||||
r.False(nonGoDirRx.MatchString(""))
|
|
||||||
r.False(nonGoDirRx.MatchString("hello"))
|
|
||||||
|
|
||||||
table := []string{
|
|
||||||
"go: cannot find main module; see 'go help modules'",
|
|
||||||
"go help modules",
|
|
||||||
"go: ",
|
|
||||||
"build .:",
|
|
||||||
"no Go files",
|
|
||||||
"can't load package: package",
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, tt := range table {
|
|
||||||
t.Run(tt, func(st *testing.T) {
|
|
||||||
r := require.New(st)
|
|
||||||
|
|
||||||
b := nonGoDirRx.MatchString(tt)
|
|
||||||
r.True(b)
|
|
||||||
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
39
here/info.go
39
here/info.go
|
@ -1,39 +0,0 @@
|
||||||
package here
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Info represents details about the directory/package
|
|
||||||
type Info struct {
|
|
||||||
Dir string
|
|
||||||
ImportPath string
|
|
||||||
Name string
|
|
||||||
Module Module
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i Info) MarshalJSON() ([]byte, error) {
|
|
||||||
mm := map[string]interface{}{
|
|
||||||
"ImportPath": i.ImportPath,
|
|
||||||
"Name": i.Name,
|
|
||||||
"Module": i.Module,
|
|
||||||
"Dir": i.Dir,
|
|
||||||
}
|
|
||||||
|
|
||||||
return json.Marshal(mm)
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsZero checks if the type has been filled
|
|
||||||
// with rich chocolately data goodness
|
|
||||||
func (i Info) IsZero() bool {
|
|
||||||
return i.String() == Info{}.String()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i Info) String() string {
|
|
||||||
b, err := json.MarshalIndent(i, "", " ")
|
|
||||||
if err != nil {
|
|
||||||
return err.Error()
|
|
||||||
}
|
|
||||||
s := string(b)
|
|
||||||
return s
|
|
||||||
}
|
|
|
@ -1,87 +0,0 @@
|
||||||
// Code generated by github.com/gobuffalo/mapgen. DO NOT EDIT.
|
|
||||||
|
|
||||||
package here
|
|
||||||
|
|
||||||
import (
|
|
||||||
"sort"
|
|
||||||
"sync"
|
|
||||||
)
|
|
||||||
|
|
||||||
// infoMap wraps sync.Map and uses the following types:
|
|
||||||
// key: string
|
|
||||||
// value: Info
|
|
||||||
type infoMap struct {
|
|
||||||
data *sync.Map
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete the key from the map
|
|
||||||
func (m *infoMap) Delete(key string) {
|
|
||||||
m.data.Delete(key)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load the key from the map.
|
|
||||||
// Returns Info or bool.
|
|
||||||
// A false return indicates either the key was not found
|
|
||||||
// or the value is not of type Info
|
|
||||||
func (m *infoMap) Load(key string) (Info, bool) {
|
|
||||||
i, ok := m.data.Load(key)
|
|
||||||
if !ok {
|
|
||||||
return Info{}, false
|
|
||||||
}
|
|
||||||
s, ok := i.(Info)
|
|
||||||
return s, ok
|
|
||||||
}
|
|
||||||
|
|
||||||
// LoadOrStore will return an existing key or
|
|
||||||
// store the value if not already in the map
|
|
||||||
func (m *infoMap) LoadOrStore(key string, value Info) (Info, bool) {
|
|
||||||
i, _ := m.data.LoadOrStore(key, value)
|
|
||||||
s, ok := i.(Info)
|
|
||||||
return s, ok
|
|
||||||
}
|
|
||||||
|
|
||||||
// LoadOr will return an existing key or
|
|
||||||
// run the function and store the results
|
|
||||||
func (m *infoMap) LoadOr(key string, fn func(*infoMap) (Info, bool)) (Info, bool) {
|
|
||||||
i, ok := m.Load(key)
|
|
||||||
if ok {
|
|
||||||
return i, ok
|
|
||||||
}
|
|
||||||
i, ok = fn(m)
|
|
||||||
if ok {
|
|
||||||
m.Store(key, i)
|
|
||||||
return i, ok
|
|
||||||
}
|
|
||||||
return i, false
|
|
||||||
}
|
|
||||||
|
|
||||||
// Range over the Info values in the map
|
|
||||||
func (m *infoMap) Range(f func(key string, value Info) bool) {
|
|
||||||
m.data.Range(func(k, v interface{}) bool {
|
|
||||||
key, ok := k.(string)
|
|
||||||
if !ok {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
value, ok := v.(Info)
|
|
||||||
if !ok {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return f(key, value)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Store a Info in the map
|
|
||||||
func (m *infoMap) Store(key string, value Info) {
|
|
||||||
m.data.Store(key, value)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Keys returns a list of keys in the map
|
|
||||||
func (m *infoMap) Keys() []string {
|
|
||||||
var keys []string
|
|
||||||
m.Range(func(key string, value Info) bool {
|
|
||||||
keys = append(keys, key)
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
sort.Strings(keys)
|
|
||||||
return keys
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
package here
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Module struct {
|
|
||||||
Path string
|
|
||||||
Main bool
|
|
||||||
Dir string
|
|
||||||
GoMod string
|
|
||||||
GoVersion string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i Module) String() string {
|
|
||||||
b, err := json.MarshalIndent(i, "", " ")
|
|
||||||
if err != nil {
|
|
||||||
return err.Error()
|
|
||||||
}
|
|
||||||
return string(b)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i Module) IsZero() bool {
|
|
||||||
return i.String() == Module{}.String()
|
|
||||||
}
|
|
|
@ -1,67 +0,0 @@
|
||||||
package here
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"path/filepath"
|
|
||||||
"regexp"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (i Info) Parse(p string) (Path, error) {
|
|
||||||
p = strings.TrimSpace(p)
|
|
||||||
p = filepath.Clean(p)
|
|
||||||
p = strings.TrimPrefix(p, i.Dir)
|
|
||||||
|
|
||||||
p = strings.Replace(p, "\\", "/", -1)
|
|
||||||
p = strings.TrimSpace(p)
|
|
||||||
|
|
||||||
if len(p) == 0 || p == ":" || p == "." {
|
|
||||||
return i.build("", "", "")
|
|
||||||
}
|
|
||||||
|
|
||||||
if pathrx == nil {
|
|
||||||
// Please do not move the initialization down to the declaration, see #54
|
|
||||||
pathrx = regexp.MustCompile("([^:]+)(:(/.+))?")
|
|
||||||
}
|
|
||||||
res := pathrx.FindAllStringSubmatch(p, -1)
|
|
||||||
if len(res) == 0 {
|
|
||||||
return Path{}, fmt.Errorf("could not parse %q", p)
|
|
||||||
}
|
|
||||||
|
|
||||||
matches := res[0]
|
|
||||||
|
|
||||||
if len(matches) != 4 {
|
|
||||||
return Path{}, fmt.Errorf("could not parse %q", p)
|
|
||||||
}
|
|
||||||
|
|
||||||
return i.build(p, matches[1], matches[3])
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i Info) build(p, pkg, name string) (Path, error) {
|
|
||||||
pt := Path{
|
|
||||||
Pkg: pkg,
|
|
||||||
Name: name,
|
|
||||||
}
|
|
||||||
|
|
||||||
if strings.HasPrefix(pt.Pkg, "/") || len(pt.Pkg) == 0 {
|
|
||||||
pt.Name = pt.Pkg
|
|
||||||
pt.Pkg = i.Module.Path
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(pt.Name) == 0 {
|
|
||||||
pt.Name = "/"
|
|
||||||
}
|
|
||||||
|
|
||||||
if pt.Pkg == pt.Name {
|
|
||||||
pt.Pkg = i.Module.Path
|
|
||||||
pt.Name = "/"
|
|
||||||
}
|
|
||||||
|
|
||||||
if !strings.HasPrefix(pt.Name, "/") {
|
|
||||||
pt.Name = "/" + pt.Name
|
|
||||||
}
|
|
||||||
pt.Name = strings.TrimPrefix(pt.Name, i.Dir)
|
|
||||||
return pt, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var pathrx *regexp.Regexp
|
|
|
@ -1,63 +0,0 @@
|
||||||
package here_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
"strings"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
|
||||||
"github.com/markbates/pkger/pkging/pkgtest"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Test_Info_Parse(t *testing.T) {
|
|
||||||
const name = "/public/index.html"
|
|
||||||
|
|
||||||
r := require.New(t)
|
|
||||||
|
|
||||||
app, err := pkgtest.NewRef()
|
|
||||||
r.NoError(err)
|
|
||||||
defer os.RemoveAll(app.Dir)
|
|
||||||
|
|
||||||
ip := app.Info.ImportPath
|
|
||||||
ip2 := "another/app"
|
|
||||||
|
|
||||||
table := []struct {
|
|
||||||
in string
|
|
||||||
exp here.Path
|
|
||||||
err bool
|
|
||||||
}{
|
|
||||||
{in: name, exp: here.Path{Pkg: ip, Name: name}},
|
|
||||||
{in: "", exp: here.Path{Pkg: ip, Name: "/"}},
|
|
||||||
{in: "/", exp: here.Path{Pkg: ip, Name: "/"}},
|
|
||||||
{in: filepath.Join(app.Info.Dir, name), exp: here.Path{Pkg: ip, Name: name}},
|
|
||||||
{in: ":" + name, exp: here.Path{Pkg: ip, Name: name}},
|
|
||||||
{in: ip + ":" + name, exp: here.Path{Pkg: ip, Name: name}},
|
|
||||||
{in: ip, exp: here.Path{Pkg: ip, Name: "/"}},
|
|
||||||
{in: ":", exp: here.Path{Pkg: ip, Name: "/"}},
|
|
||||||
{in: ip2 + ":" + name, exp: here.Path{Pkg: ip2, Name: name}},
|
|
||||||
{in: ip2, exp: here.Path{Pkg: ip2, Name: "/"}},
|
|
||||||
{in: ip2 + ":", exp: here.Path{Pkg: ip2, Name: "/"}},
|
|
||||||
{in: filepath.Join(app.Info.Dir, "public"), exp: here.Path{Pkg: ip, Name: "/public"}},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, tt := range table {
|
|
||||||
for _, in := range []string{tt.in, strings.ReplaceAll(tt.in, "/", "\\")} {
|
|
||||||
t.Run(in, func(st *testing.T) {
|
|
||||||
r := require.New(st)
|
|
||||||
|
|
||||||
pt, err := app.Info.Parse(in)
|
|
||||||
|
|
||||||
if tt.err {
|
|
||||||
r.Error(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
r.NoError(err)
|
|
||||||
|
|
||||||
r.Equal(tt.exp, pt)
|
|
||||||
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
20
here/path.go
20
here/path.go
|
@ -1,20 +0,0 @@
|
||||||
package here
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Path struct {
|
|
||||||
Pkg string
|
|
||||||
Name string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p Path) String() string {
|
|
||||||
if p.Name == "" {
|
|
||||||
p.Name = "/"
|
|
||||||
}
|
|
||||||
if p.Pkg == "" {
|
|
||||||
return p.Name
|
|
||||||
}
|
|
||||||
return fmt.Sprintf("%s:%s", p.Pkg, p.Name)
|
|
||||||
}
|
|
44
here/pkg.go
44
here/pkg.go
|
@ -1,44 +0,0 @@
|
||||||
package here
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Package attempts to gather info for the requested package.
|
|
||||||
//
|
|
||||||
// From the `go help list` docs:
|
|
||||||
// The -find flag causes list to identify the named packages but not
|
|
||||||
// resolve their dependencies: the Imports and Deps lists will be empty.
|
|
||||||
//
|
|
||||||
// A workaround for this issue is to use the `Dir` field in the
|
|
||||||
// returned `Info` value and pass it to the `Dir(string) (Info, error)`
|
|
||||||
// function to return the complete data.
|
|
||||||
func Package(p string) (Info, error) {
|
|
||||||
i, err := Cache(p, func(p string) (Info, error) {
|
|
||||||
var i Info
|
|
||||||
if len(p) == 0 || p == "." {
|
|
||||||
return i, fmt.Errorf("missing package name")
|
|
||||||
}
|
|
||||||
b, err := run("go", "list", "-json", "-find", p)
|
|
||||||
if err != nil {
|
|
||||||
return i, err
|
|
||||||
}
|
|
||||||
if err := json.Unmarshal(b, &i); err != nil {
|
|
||||||
return i, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return i, nil
|
|
||||||
})
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return i, err
|
|
||||||
}
|
|
||||||
|
|
||||||
Cache(i.Dir, func(p string) (Info, error) {
|
|
||||||
return i, nil
|
|
||||||
})
|
|
||||||
|
|
||||||
return i, nil
|
|
||||||
|
|
||||||
}
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"sort"
|
"sort"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/pkging"
|
"github.com/markbates/pkger/pkging"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"sort"
|
"sort"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Infos wraps sync.Map and uses the following types:
|
// Infos wraps sync.Map and uses the following types:
|
||||||
|
|
|
@ -40,7 +40,7 @@ func (decls Decls) Files() ([]*File, error) {
|
||||||
|
|
||||||
files, err := fl.Files(v)
|
files, err := fl.Files(v)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("%w: %s", err, d)
|
return nil, fmt.Errorf("%s: %s", err, d)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, f := range files {
|
for _, f := range files {
|
||||||
|
|
|
@ -3,7 +3,7 @@ package parser
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
)
|
)
|
||||||
|
|
||||||
type File struct {
|
type File struct {
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
)
|
)
|
||||||
|
|
||||||
var _ Decl = IncludeDecl{}
|
var _ Decl = IncludeDecl{}
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
)
|
)
|
||||||
|
|
||||||
var defaultIgnoredFolders = []string{".", "_", "vendor", "node_modules", "testdata"}
|
var defaultIgnoredFolders = []string{".", "_", "vendor", "node_modules", "testdata"}
|
||||||
|
@ -100,19 +100,19 @@ func (p *Parser) ParseDir(abs string, mode parser.Mode) ([]*ParsedSource, error)
|
||||||
|
|
||||||
her, err := here.Dir(abs)
|
her, err := here.Dir(abs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("%w: here.Dir failed %s", err, abs)
|
return nil, fmt.Errorf("%s: here.Dir failed %s", err, abs)
|
||||||
}
|
}
|
||||||
|
|
||||||
pt, err := her.Parse(strings.TrimPrefix(abs, filepath.Dir(abs)))
|
pt, err := her.Parse(strings.TrimPrefix(abs, filepath.Dir(abs)))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("%w: here.Parse failed %s", err, abs)
|
return nil, fmt.Errorf("%s: here.Parse failed %s", err, abs)
|
||||||
}
|
}
|
||||||
|
|
||||||
fset := token.NewFileSet()
|
fset := token.NewFileSet()
|
||||||
|
|
||||||
pkgs, err := parser.ParseDir(fset, abs, nil, 0)
|
pkgs, err := parser.ParseDir(fset, abs, nil, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("%w: ParseDir failed %s", err, abs)
|
return nil, fmt.Errorf("%s: ParseDir failed %s", err, abs)
|
||||||
}
|
}
|
||||||
|
|
||||||
var srcs []*ParsedSource
|
var srcs []*ParsedSource
|
||||||
|
@ -205,13 +205,13 @@ func (p *Parser) parse() error {
|
||||||
|
|
||||||
srcs, err := p.ParseDir(path, 0)
|
srcs, err := p.ParseDir(path, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("%w: %s", err, path)
|
return fmt.Errorf("%s: %s", err, path)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, src := range srcs {
|
for _, src := range srcs {
|
||||||
mm, err := src.DeclsMap()
|
mm, err := src.DeclsMap()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("%w: %s", err, src.Abs)
|
return fmt.Errorf("%s: %s", err, src.Abs)
|
||||||
}
|
}
|
||||||
for k, v := range mm {
|
for k, v := range mm {
|
||||||
p.decls[k] = append(p.decls[k], v...)
|
p.decls[k] = append(p.decls[k], v...)
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/pkging/pkgtest"
|
"github.com/markbates/pkger/pkging/pkgtest"
|
||||||
"github.com/markbates/pkger/pkging/stdos"
|
"github.com/markbates/pkger/pkging/stdos"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
@ -50,7 +50,6 @@ func Test_Parser_Ref_Include(t *testing.T) {
|
||||||
}()
|
}()
|
||||||
r := require.New(t)
|
r := require.New(t)
|
||||||
|
|
||||||
here.ClearCache()
|
|
||||||
ref, err := pkgtest.NewRef()
|
ref, err := pkgtest.NewRef()
|
||||||
r.NoError(err)
|
r.NoError(err)
|
||||||
defer os.RemoveAll(ref.Dir)
|
defer os.RemoveAll(ref.Dir)
|
||||||
|
@ -75,7 +74,6 @@ func Test_Parser_Ref_Include(t *testing.T) {
|
||||||
func Test_Parser_Example_HTTP(t *testing.T) {
|
func Test_Parser_Example_HTTP(t *testing.T) {
|
||||||
r := require.New(t)
|
r := require.New(t)
|
||||||
|
|
||||||
here.ClearCache()
|
|
||||||
cur, err := here.Package("github.com/markbates/pkger")
|
cur, err := here.Package("github.com/markbates/pkger")
|
||||||
r.NoError(err)
|
r.NoError(err)
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Source struct {
|
type Source struct {
|
||||||
|
@ -140,26 +140,26 @@ func (p *ParsedSource) parse() error {
|
||||||
n := ce.Args[0]
|
n := ce.Args[0]
|
||||||
val, err := p.value(n)
|
val, err := p.value(n)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
p.err = fmt.Errorf("%w: %s", err, n)
|
p.err = fmt.Errorf("%s: %s", err, n)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
info, err := here.Dir(filepath.Dir(p.Abs))
|
info, err := here.Dir(filepath.Dir(p.Abs))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
p.err = fmt.Errorf("%w: %s", err, p.Abs)
|
p.err = fmt.Errorf("%s: %s", err, p.Abs)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
pt, err := info.Parse(val)
|
pt, err := info.Parse(val)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
p.err = fmt.Errorf("%w: %s", err, p.Abs)
|
p.err = fmt.Errorf("%s: %s", err, p.Abs)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
if pt.Pkg != info.Module.Path {
|
if pt.Pkg != info.Module.Path {
|
||||||
info, err = here.Package(pt.Pkg)
|
info, err = here.Package(pt.Pkg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
p.err = fmt.Errorf("%w: %s", err, p.Abs)
|
p.err = fmt.Errorf("%s: %s", err, p.Abs)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
)
|
)
|
||||||
|
|
||||||
var _ Decl = WalkDecl{}
|
var _ Decl = WalkDecl{}
|
||||||
|
|
2
pkger.go
2
pkger.go
|
@ -6,7 +6,7 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/pkging"
|
"github.com/markbates/pkger/pkging"
|
||||||
"github.com/markbates/pkger/pkging/stdos"
|
"github.com/markbates/pkger/pkging/stdos"
|
||||||
)
|
)
|
||||||
|
|
|
@ -6,7 +6,7 @@ import (
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/internal/takeon/github.com/markbates/hepa"
|
"github.com/markbates/pkger/internal/takeon/github.com/markbates/hepa"
|
||||||
"github.com/markbates/pkger/internal/takeon/github.com/markbates/hepa/filters"
|
"github.com/markbates/pkger/internal/takeon/github.com/markbates/hepa/filters"
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package embed
|
package embed
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/pkging"
|
"github.com/markbates/pkger/pkging"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
)
|
)
|
||||||
|
|
||||||
type File interface {
|
type File interface {
|
||||||
|
|
|
@ -6,7 +6,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/pkging"
|
"github.com/markbates/pkger/pkging"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
|
@ -6,7 +6,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/pkging"
|
"github.com/markbates/pkger/pkging"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -19,7 +19,6 @@ func (fx *Pkger) Add(files ...*os.File) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
pt, err := fx.Parse(f.Name())
|
pt, err := fx.Parse(f.Name())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/pkging/mem"
|
"github.com/markbates/pkger/pkging/mem"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
|
@ -3,7 +3,7 @@ package mem
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/internal/maps"
|
"github.com/markbates/pkger/internal/maps"
|
||||||
"github.com/markbates/pkger/pkging"
|
"github.com/markbates/pkger/pkging"
|
||||||
"github.com/markbates/pkger/pkging/embed"
|
"github.com/markbates/pkger/pkging/embed"
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/pkging"
|
"github.com/markbates/pkger/pkging"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/internal/maps"
|
"github.com/markbates/pkger/internal/maps"
|
||||||
"github.com/markbates/pkger/pkging"
|
"github.com/markbates/pkger/pkging"
|
||||||
)
|
)
|
||||||
|
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Pkger interface {
|
type Pkger interface {
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/pkging"
|
"github.com/markbates/pkger/pkging"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/pkging"
|
"github.com/markbates/pkger/pkging"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Ref struct {
|
type Ref struct {
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/gobuffalo/here v0.5.2-0.20191203194143-8e97fc9ad6d3 h1:9NGxHWbGFujaZ5vT+uXurb9m3QoWa175cYM2Qs97nQo=
|
||||||
|
github.com/gobuffalo/here v0.5.2-0.20191203194143-8e97fc9ad6d3/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM=
|
||||||
|
github.com/gobuffalo/here v0.6.0 h1:hYrd0a6gDmWxBM4TnrGw8mQg24iSVoIkHEk7FodQcBI=
|
||||||
|
github.com/gobuffalo/here v0.6.0/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM=
|
||||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
@ -18,3 +22,4 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
|
gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
|
||||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func Serve() {
|
func Serve() {
|
||||||
pkger.Stat("github.com/stretchr/testify:/README.md")
|
pkger.Stat("github.com/markbates/pkger:/README.md")
|
||||||
dir := http.FileServer(pkger.Dir("/public"))
|
dir := http.FileServer(pkger.Dir("/public"))
|
||||||
http.ListenAndServe(":3000", dir)
|
http.ListenAndServe(":3000", dir)
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ import (
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/pkging"
|
"github.com/markbates/pkger/pkging"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
package pkgutil
|
package pkgutil
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/parser"
|
"github.com/markbates/pkger/parser"
|
||||||
"github.com/markbates/pkger/pkging/embed"
|
"github.com/markbates/pkger/pkging/embed"
|
||||||
"github.com/markbates/pkger/pkging/mem"
|
"github.com/markbates/pkger/pkging/mem"
|
||||||
|
@ -23,9 +25,12 @@ func Stuff(w io.Writer, c here.Info, decls parser.Decls) error {
|
||||||
|
|
||||||
for _, pf := range files {
|
for _, pf := range files {
|
||||||
err = func() error {
|
err = func() error {
|
||||||
|
if strings.HasSuffix(pf.Abs, ".tmp") {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
df, err := os.Open(pf.Abs)
|
df, err := os.Open(pf.Abs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return fmt.Errorf("could open stuff %s: %s", pf.Abs, err)
|
||||||
}
|
}
|
||||||
defer df.Close()
|
defer df.Close()
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,12 @@ func Test_Stuff(t *testing.T) {
|
||||||
r.NoError(err)
|
r.NoError(err)
|
||||||
defer os.RemoveAll(ref.Dir)
|
defer os.RemoveAll(ref.Dir)
|
||||||
|
|
||||||
|
pwd, err := os.Getwd()
|
||||||
|
r.NoError(err)
|
||||||
|
defer os.Chdir(pwd)
|
||||||
|
|
||||||
|
os.Chdir(ref.Dir)
|
||||||
|
|
||||||
disk, err := stdos.New(ref.Info)
|
disk, err := stdos.New(ref.Info)
|
||||||
r.NoError(err)
|
r.NoError(err)
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/pkging"
|
"github.com/markbates/pkger/pkging"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ package stdos
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/internal/maps"
|
"github.com/markbates/pkger/internal/maps"
|
||||||
"github.com/markbates/pkger/pkging"
|
"github.com/markbates/pkger/pkging"
|
||||||
)
|
)
|
||||||
|
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/markbates/pkger/here"
|
"github.com/gobuffalo/here"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Wrap(parent, with Pkger) Pkger {
|
func Wrap(parent, with Pkger) Pkger {
|
||||||
|
|
Loading…
Reference in New Issue