mirror of https://github.com/markbates/pkger.git
compress packages
This commit is contained in:
parent
fa7d8c2b96
commit
a63d5995a3
|
@ -3,12 +3,12 @@ package main
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/markbates/pkger"
|
||||||
"github.com/markbates/pkger/parser"
|
"github.com/markbates/pkger/parser"
|
||||||
"github.com/markbates/pkger/pkgs"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func list(args []string) error {
|
func list(args []string) error {
|
||||||
info, err := pkgs.Current()
|
info, err := pkger.Current()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,14 +11,12 @@ import (
|
||||||
|
|
||||||
"github.com/markbates/pkger"
|
"github.com/markbates/pkger"
|
||||||
"github.com/markbates/pkger/parser"
|
"github.com/markbates/pkger/parser"
|
||||||
"github.com/markbates/pkger/paths"
|
|
||||||
"github.com/markbates/pkger/pkgs"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const outName = "pkged.go"
|
const outName = "pkged.go"
|
||||||
|
|
||||||
func pack(args []string) error {
|
func pack(args []string) error {
|
||||||
info, err := pkgs.Current()
|
info, err := pkger.Current()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -41,7 +39,7 @@ func pack(args []string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func Package(p string, paths []paths.Path) error {
|
func Package(p string, paths []pkger.Path) error {
|
||||||
os.RemoveAll(p)
|
os.RemoveAll(p)
|
||||||
|
|
||||||
var files []*pkger.File
|
var files []*pkger.File
|
||||||
|
|
|
@ -5,11 +5,10 @@ import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/markbates/pkger"
|
"github.com/markbates/pkger"
|
||||||
"github.com/markbates/pkger/paths"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func walk(args []string) error {
|
func walk(args []string) error {
|
||||||
err := pkger.Walk(".", func(path paths.Path, info os.FileInfo) error {
|
err := pkger.Walk(".", func(path pkger.Path, info os.FileInfo) error {
|
||||||
fmt.Println(path)
|
fmt.Println(path)
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// TODO: need to populate in memory cache when packed.
|
// TODO: need to populate in memory cache when packed.
|
||||||
// you can't use go list, etc... in prod
|
// you can't use go list, etc... in prod
|
||||||
package pkgs
|
package pkger
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/gobuffalo/here"
|
"github.com/gobuffalo/here"
|
60
file.go
60
file.go
|
@ -8,11 +8,9 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gobuffalo/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/paths"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const timeFmt = time.RFC3339Nano
|
const timeFmt = time.RFC3339Nano
|
||||||
|
@ -20,9 +18,8 @@ const timeFmt = time.RFC3339Nano
|
||||||
type File struct {
|
type File struct {
|
||||||
info *FileInfo
|
info *FileInfo
|
||||||
her here.Info
|
her here.Info
|
||||||
path paths.Path
|
path Path
|
||||||
data []byte
|
data []byte
|
||||||
index *index
|
|
||||||
writer io.ReadWriter
|
writer io.ReadWriter
|
||||||
Source io.ReadCloser
|
Source io.ReadCloser
|
||||||
}
|
}
|
||||||
|
@ -95,7 +92,6 @@ func (f File) MarshalJSON() ([]byte, error) {
|
||||||
m["info"] = f.info
|
m["info"] = f.info
|
||||||
m["her"] = f.her
|
m["her"] = f.her
|
||||||
m["path"] = f.path
|
m["path"] = f.path
|
||||||
m["index"] = f.index
|
|
||||||
m["data"] = f.data
|
m["data"] = f.data
|
||||||
if len(f.data) == 0 {
|
if len(f.data) == 0 {
|
||||||
b, err := ioutil.ReadAll(&f)
|
b, err := ioutil.ReadAll(&f)
|
||||||
|
@ -138,30 +134,16 @@ func (f *File) UnmarshalJSON(b []byte) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
ind, ok := m["index"]
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("missing index")
|
|
||||||
}
|
|
||||||
f.index = newIndex()
|
|
||||||
if err := json.Unmarshal(ind, f.index); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *File) Open(name string) (http.File, error) {
|
func (f *File) Open(name string) (http.File, error) {
|
||||||
if f.index == nil {
|
|
||||||
f.index = newIndex()
|
|
||||||
}
|
|
||||||
|
|
||||||
// name = strings.TrimPrefix(name, "/")
|
// name = strings.TrimPrefix(name, "/")
|
||||||
pt, err := paths.Parse(name)
|
pt, err := Parse(name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
pt.Name = path.Join(f.Path().Name, pt.Name)
|
|
||||||
|
|
||||||
if len(pt.Pkg) == 0 {
|
if len(pt.Pkg) == 0 {
|
||||||
pt.Pkg = f.path.Pkg
|
pt.Pkg = f.path.Pkg
|
||||||
}
|
}
|
||||||
|
@ -170,22 +152,36 @@ func (f *File) Open(name string) (http.File, error) {
|
||||||
crs: &byteCRS{bytes.NewReader(f.data)},
|
crs: &byteCRS{bytes.NewReader(f.data)},
|
||||||
}
|
}
|
||||||
|
|
||||||
if pt == f.path {
|
|
||||||
h.File = f
|
|
||||||
} else {
|
|
||||||
of, err := f.index.Open(pt)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
defer of.Close()
|
|
||||||
h.File = of
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(f.data) > 0 {
|
if len(f.data) > 0 {
|
||||||
return h, nil
|
return h, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if pt == f.path {
|
||||||
|
h.File = f
|
||||||
|
}
|
||||||
|
|
||||||
|
if h.File == nil {
|
||||||
|
of, err := rootIndex.Open(pt)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
h.File = of
|
||||||
|
}
|
||||||
|
|
||||||
bf, err := f.her.Open(h.File.FilePath())
|
bf, err := f.her.Open(h.File.FilePath())
|
||||||
|
if err != nil {
|
||||||
|
if _, ok := err.(*os.PathError); ok {
|
||||||
|
return h, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
b, err := ioutil.ReadAll(h.File)
|
||||||
|
if err != nil {
|
||||||
|
return h, err
|
||||||
|
}
|
||||||
|
h.crs = &byteCRS{bytes.NewReader(b)}
|
||||||
|
return h, err
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return h, err
|
return h, err
|
||||||
}
|
}
|
||||||
|
@ -222,7 +218,7 @@ func (f File) FilePath() string {
|
||||||
return f.her.FilePath(f.Name())
|
return f.her.FilePath(f.Name())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f File) Path() paths.Path {
|
func (f File) Path() Path {
|
||||||
return f.path
|
return f.path
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,6 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/markbates/pkger/paths"
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -55,7 +54,7 @@ func Test_File_Write(t *testing.T) {
|
||||||
|
|
||||||
i := newIndex()
|
i := newIndex()
|
||||||
|
|
||||||
f, err := i.Create(paths.Path{
|
f, err := i.Create(Path{
|
||||||
Name: "/hello.txt",
|
Name: "/hello.txt",
|
||||||
})
|
})
|
||||||
r.NoError(err)
|
r.NoError(err)
|
||||||
|
|
73
index.go
73
index.go
|
@ -9,24 +9,20 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gobuffalo/here"
|
"github.com/gobuffalo/here"
|
||||||
"github.com/markbates/pkger/paths"
|
|
||||||
"github.com/markbates/pkger/pkgs"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type index struct {
|
type index struct {
|
||||||
Pkg string
|
Files map[Path]*File
|
||||||
Files map[paths.Path]*File
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *index) Create(pt paths.Path) (*File, error) {
|
func (i *index) Create(pt Path) (*File, error) {
|
||||||
her, err := pkgs.Pkg(pt.Pkg)
|
her, err := Pkg(pt.Pkg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
f := &File{
|
f := &File{
|
||||||
path: pt,
|
path: pt,
|
||||||
index: newIndex(),
|
her: her,
|
||||||
her: her,
|
|
||||||
info: &FileInfo{
|
info: &FileInfo{
|
||||||
name: strings.TrimPrefix(pt.Name, "/"),
|
name: strings.TrimPrefix(pt.Name, "/"),
|
||||||
mode: 0666,
|
mode: 0666,
|
||||||
|
@ -39,9 +35,7 @@ func (i *index) Create(pt paths.Path) (*File, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i index) MarshalJSON() ([]byte, error) {
|
func (i index) MarshalJSON() ([]byte, error) {
|
||||||
m := map[string]interface{}{
|
m := map[string]interface{}{}
|
||||||
"pkg": i.Pkg,
|
|
||||||
}
|
|
||||||
|
|
||||||
fm := map[string]File{}
|
fm := map[string]File{}
|
||||||
|
|
||||||
|
@ -54,10 +48,7 @@ func (i index) MarshalJSON() ([]byte, error) {
|
||||||
return json.Marshal(m)
|
return json.Marshal(m)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i index) Walk(pt paths.Path, wf WalkFunc) error {
|
func (i index) Walk(pt Path, wf WalkFunc) error {
|
||||||
if len(pt.Pkg) == 0 {
|
|
||||||
pt.Pkg = i.Pkg
|
|
||||||
}
|
|
||||||
if len(i.Files) > 0 {
|
if len(i.Files) > 0 {
|
||||||
for k, v := range i.Files {
|
for k, v := range i.Files {
|
||||||
if k.Pkg != pt.Pkg {
|
if k.Pkg != pt.Pkg {
|
||||||
|
@ -72,7 +63,7 @@ func (i index) Walk(pt paths.Path, wf WalkFunc) error {
|
||||||
var info here.Info
|
var info here.Info
|
||||||
var err error
|
var err error
|
||||||
if pt.Pkg == "." {
|
if pt.Pkg == "." {
|
||||||
info, err = pkgs.Current()
|
info, err = Current()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -80,7 +71,7 @@ func (i index) Walk(pt paths.Path, wf WalkFunc) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if info.IsZero() {
|
if info.IsZero() {
|
||||||
info, err = pkgs.Pkg(pt.Pkg)
|
info, err = Pkg(pt.Pkg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("%s: %s", pt, err)
|
return fmt.Errorf("%s: %s", pt, err)
|
||||||
}
|
}
|
||||||
|
@ -92,7 +83,7 @@ func (i index) Walk(pt paths.Path, wf WalkFunc) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
path = strings.TrimPrefix(path, info.Dir)
|
path = strings.TrimPrefix(path, info.Dir)
|
||||||
pt, err := paths.Parse(fmt.Sprintf("%s:%s", pt.Pkg, path))
|
pt, err := Parse(fmt.Sprintf("%s:%s", pt.Pkg, path))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -102,28 +93,21 @@ func (i index) Walk(pt paths.Path, wf WalkFunc) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i index) Open(pt paths.Path) (*File, error) {
|
func (i *index) Open(pt Path) (*File, error) {
|
||||||
if len(pt.Pkg) == 0 {
|
|
||||||
pt.Pkg = i.Pkg
|
|
||||||
}
|
|
||||||
f, ok := i.Files[pt]
|
f, ok := i.Files[pt]
|
||||||
if !ok {
|
if !ok {
|
||||||
return i.openDisk(pt)
|
return i.openDisk(pt)
|
||||||
}
|
}
|
||||||
return &File{
|
return &File{
|
||||||
info: f.info,
|
info: f.info,
|
||||||
path: f.path,
|
path: f.path,
|
||||||
data: f.data,
|
data: f.data,
|
||||||
her: f.her,
|
her: f.her,
|
||||||
index: newIndex(),
|
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i index) openDisk(pt paths.Path) (*File, error) {
|
func (i index) openDisk(pt Path) (*File, error) {
|
||||||
if len(pt.Pkg) == 0 {
|
info, err := Pkg(pt.Pkg)
|
||||||
pt.Pkg = i.Pkg
|
|
||||||
}
|
|
||||||
info, err := pkgs.Pkg(pt.Pkg)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -140,30 +124,17 @@ func (i index) openDisk(pt paths.Path) (*File, error) {
|
||||||
info: WithName(strings.TrimPrefix(pt.Name, "/"), NewFileInfo(fi)),
|
info: WithName(strings.TrimPrefix(pt.Name, "/"), NewFileInfo(fi)),
|
||||||
her: info,
|
her: info,
|
||||||
path: pt,
|
path: pt,
|
||||||
index: &index{
|
|
||||||
Files: map[paths.Path]*File{},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
return f, nil
|
return f, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i index) Parse(p string) (paths.Path, error) {
|
|
||||||
pt, err := paths.Parse(p)
|
|
||||||
if err != nil {
|
|
||||||
return pt, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(pt.Pkg) == 0 {
|
|
||||||
pt.Pkg = i.Pkg
|
|
||||||
}
|
|
||||||
|
|
||||||
return pt, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func newIndex() *index {
|
func newIndex() *index {
|
||||||
return &index{
|
return &index{
|
||||||
Files: map[paths.Path]*File{},
|
Files: map[Path]*File{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var rootIndex = newIndex()
|
var rootIndex = func() *index {
|
||||||
|
i := newIndex()
|
||||||
|
return i
|
||||||
|
}()
|
||||||
|
|
|
@ -6,7 +6,6 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/markbates/pkger/paths"
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -15,7 +14,7 @@ func Test_index_Create(t *testing.T) {
|
||||||
|
|
||||||
i := newIndex()
|
i := newIndex()
|
||||||
|
|
||||||
f, err := i.Create(paths.Path{
|
f, err := i.Create(Path{
|
||||||
Name: "/hello.txt",
|
Name: "/hello.txt",
|
||||||
})
|
})
|
||||||
r.NoError(err)
|
r.NoError(err)
|
||||||
|
@ -38,7 +37,7 @@ func Test_index_Create_Write(t *testing.T) {
|
||||||
|
|
||||||
i := newIndex()
|
i := newIndex()
|
||||||
|
|
||||||
f, err := i.Create(paths.Path{
|
f, err := i.Create(Path{
|
||||||
Name: "/hello.txt",
|
Name: "/hello.txt",
|
||||||
})
|
})
|
||||||
r.NoError(err)
|
r.NoError(err)
|
||||||
|
|
|
@ -5,6 +5,8 @@ github.com/gobuffalo/envy v1.7.0 h1:GlXgaiBkmrYMHco6t4j7SacKO4XUjvh5pwXh0f4uxXU=
|
||||||
github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
|
github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
|
||||||
github.com/gobuffalo/here v0.2.1 h1:YWZUvrHnxNCIY2nnHPnF5Ob99Z5Iq29wHioLgcY+2G0=
|
github.com/gobuffalo/here v0.2.1 h1:YWZUvrHnxNCIY2nnHPnF5Ob99Z5Iq29wHioLgcY+2G0=
|
||||||
github.com/gobuffalo/here v0.2.1/go.mod h1:2a6G14FaAKOGJMK/5UNa4Og/+iyFS5cq3MnlvFR7YDk=
|
github.com/gobuffalo/here v0.2.1/go.mod h1:2a6G14FaAKOGJMK/5UNa4Og/+iyFS5cq3MnlvFR7YDk=
|
||||||
|
github.com/gobuffalo/here v0.2.2 h1:AXEK2ApOb4F5cKZ46Ofi8inGWa0qy5ChmJXAK5/IDmo=
|
||||||
|
github.com/gobuffalo/here v0.2.2/go.mod h1:2a6G14FaAKOGJMK/5UNa4Og/+iyFS5cq3MnlvFR7YDk=
|
||||||
github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
|
github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
|
||||||
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
|
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
|
|
|
@ -6,11 +6,10 @@ import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/markbates/pkger"
|
"github.com/markbates/pkger"
|
||||||
"github.com/markbates/pkger/paths"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
err := pkger.Walk("github.com/gobuffalo/envy", func(path paths.Path, info os.FileInfo) error {
|
err := pkger.Walk("github.com/gobuffalo/envy", func(path pkger.Path, info os.FileInfo) error {
|
||||||
fmt.Println(path)
|
fmt.Println(path)
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
package paths
|
package pkger
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/markbates/pkger/pkgs"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var cache = pathsMap{
|
var cache = pathsMap{
|
||||||
|
@ -44,7 +42,7 @@ func build(p, pkg, name string) (Path, error) {
|
||||||
Name: name,
|
Name: name,
|
||||||
}
|
}
|
||||||
|
|
||||||
info, err := pkgs.Current()
|
info, err := Current()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return pt, err
|
return pt, err
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package paths
|
package pkger
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
|
@ -6,15 +6,14 @@ import (
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/markbates/pkger/paths"
|
"github.com/markbates/pkger"
|
||||||
"github.com/markbates/pkger/pkgs"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var DefaultIgnoredFolders = []string{".", "_", "vendor", "node_modules", "_fixtures", "testdata"}
|
var DefaultIgnoredFolders = []string{".", "_", "vendor", "node_modules", "_fixtures", "testdata"}
|
||||||
|
|
||||||
func Parse(name string) (Results, error) {
|
func Parse(name string) (Results, error) {
|
||||||
var r Results
|
var r Results
|
||||||
c, err := pkgs.Current()
|
c, err := pkger.Current()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return r, err
|
return r, err
|
||||||
}
|
}
|
||||||
|
@ -23,19 +22,19 @@ func Parse(name string) (Results, error) {
|
||||||
name = c.ImportPath
|
name = c.ImportPath
|
||||||
}
|
}
|
||||||
|
|
||||||
pt, err := paths.Parse(name)
|
pt, err := pkger.Parse(name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return r, err
|
return r, err
|
||||||
}
|
}
|
||||||
r.Path = pt
|
r.Path = pt
|
||||||
|
|
||||||
her, err := pkgs.Pkg(r.Path.Pkg)
|
her, err := pkger.Pkg(r.Path.Pkg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return r, err
|
return r, err
|
||||||
}
|
}
|
||||||
|
|
||||||
m := map[paths.Path]bool{}
|
m := map[pkger.Path]bool{}
|
||||||
|
|
||||||
root := r.Path.Name
|
root := r.Path.Name
|
||||||
if !strings.HasPrefix(root, string(filepath.Separator)) {
|
if !strings.HasPrefix(root, string(filepath.Separator)) {
|
||||||
|
@ -116,7 +115,7 @@ func Parse(name string) (Results, error) {
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
var found []paths.Path
|
var found []pkger.Path
|
||||||
|
|
||||||
for k := range m {
|
for k := range m {
|
||||||
if len(k.String()) == 0 {
|
if len(k.String()) == 0 {
|
||||||
|
@ -132,10 +131,10 @@ func Parse(name string) (Results, error) {
|
||||||
return r, err
|
return r, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func sourceFiles(pt paths.Path) ([]paths.Path, error) {
|
func sourceFiles(pt pkger.Path) ([]pkger.Path, error) {
|
||||||
var res []paths.Path
|
var res []pkger.Path
|
||||||
|
|
||||||
her, err := pkgs.Pkg(pt.Pkg)
|
her, err := pkger.Pkg(pt.Pkg)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return res, err
|
return res, err
|
||||||
|
@ -150,7 +149,7 @@ func sourceFiles(pt paths.Path) ([]paths.Path, error) {
|
||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
c, err := pkgs.Current()
|
c, err := pkger.Current()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return res, err
|
return res, err
|
||||||
}
|
}
|
||||||
|
@ -189,7 +188,7 @@ func sourceFiles(pt paths.Path) ([]paths.Path, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
n := strings.TrimPrefix(strings.TrimPrefix(p, her.Dir), "/")
|
n := strings.TrimPrefix(strings.TrimPrefix(p, her.Dir), "/")
|
||||||
pt := paths.Path{
|
pt := pkger.Path{
|
||||||
Name: n,
|
Name: n,
|
||||||
}
|
}
|
||||||
res = append(res, pt)
|
res = append(res, pt)
|
||||||
|
@ -200,6 +199,6 @@ func sourceFiles(pt paths.Path) ([]paths.Path, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type Results struct {
|
type Results struct {
|
||||||
Paths []paths.Path
|
Paths []pkger.Path
|
||||||
Path paths.Path
|
Path pkger.Path
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,23 +5,23 @@ import (
|
||||||
"go/ast"
|
"go/ast"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/markbates/pkger/paths"
|
"github.com/markbates/pkger"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Visitor struct {
|
type Visitor struct {
|
||||||
File string
|
File string
|
||||||
Found map[paths.Path]bool
|
Found map[pkger.Path]bool
|
||||||
errors []error
|
errors []error
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewVisitor(p string) (*Visitor, error) {
|
func NewVisitor(p string) (*Visitor, error) {
|
||||||
return &Visitor{
|
return &Visitor{
|
||||||
File: p,
|
File: p,
|
||||||
Found: map[paths.Path]bool{},
|
Found: map[pkger.Path]bool{},
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *Visitor) Run() ([]paths.Path, error) {
|
func (v *Visitor) Run() ([]pkger.Path, error) {
|
||||||
pf, err := parseFile(v.File)
|
pf, err := parseFile(v.File)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -29,7 +29,7 @@ func (v *Visitor) Run() ([]paths.Path, error) {
|
||||||
|
|
||||||
ast.Walk(v, pf.Ast)
|
ast.Walk(v, pf.Ast)
|
||||||
|
|
||||||
var found []paths.Path
|
var found []pkger.Path
|
||||||
|
|
||||||
for k := range v.Found {
|
for k := range v.Found {
|
||||||
found = append(found, k)
|
found = append(found, k)
|
||||||
|
@ -40,7 +40,7 @@ func (v *Visitor) Run() ([]paths.Path, error) {
|
||||||
|
|
||||||
func (v *Visitor) addPath(p string) error {
|
func (v *Visitor) addPath(p string) error {
|
||||||
p, _ = strconv.Unquote(p)
|
p, _ = strconv.Unquote(p)
|
||||||
pt, err := paths.Parse(p)
|
pt, err := pkger.Parse(p)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package paths
|
package pkger
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
|
@ -1,4 +1,4 @@
|
||||||
package paths
|
package pkger
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated by github.com/gobuffalo/mapgen. DO NOT EDIT.
|
// Code generated by github.com/gobuffalo/mapgen. DO NOT EDIT.
|
||||||
|
|
||||||
package paths
|
package pkger
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"sort"
|
"sort"
|
6
pkger.go
6
pkger.go
|
@ -1,10 +1,8 @@
|
||||||
package pkger
|
package pkger
|
||||||
|
|
||||||
import "github.com/markbates/pkger/paths"
|
|
||||||
|
|
||||||
// Open opens the named file for reading.
|
// Open opens the named file for reading.
|
||||||
func Open(p string) (*File, error) {
|
func Open(p string) (*File, error) {
|
||||||
pt, err := paths.Parse(p)
|
pt, err := Parse(p)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -13,7 +11,7 @@ func Open(p string) (*File, error) {
|
||||||
|
|
||||||
// Create creates the named file with mode 0666 (before umask), truncating it if it already exists. If successful, methods on the returned File can be used for I/O; the associated file descriptor has mode O_RDWR. If there is an error, it will be of type *PathError.
|
// Create creates the named file with mode 0666 (before umask), truncating it if it already exists. If successful, methods on the returned File can be used for I/O; the associated file descriptor has mode O_RDWR. If there is an error, it will be of type *PathError.
|
||||||
func Create(p string) (*File, error) {
|
func Create(p string) (*File, error) {
|
||||||
pt, err := paths.Parse(p)
|
pt, err := Parse(p)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,17 +5,12 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func createFile(i *index, p string, body ...string) (*File, error) {
|
func createFile(p string, body ...string) (*File, error) {
|
||||||
pt, err := i.Parse(p)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(body) == 0 {
|
if len(body) == 0 {
|
||||||
body = append(body, radio)
|
body = append(body, radio)
|
||||||
}
|
}
|
||||||
|
|
||||||
f, err := i.Create(pt)
|
f, err := Create(p)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
6
walk.go
6
walk.go
|
@ -2,14 +2,12 @@ package pkger
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/markbates/pkger/paths"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type WalkFunc func(paths.Path, os.FileInfo) error
|
type WalkFunc func(Path, os.FileInfo) error
|
||||||
|
|
||||||
func Walk(p string, wf WalkFunc) error {
|
func Walk(p string, wf WalkFunc) error {
|
||||||
pt, err := paths.Parse(p)
|
pt, err := Parse(p)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue