Skip to content

Commit

Permalink
Strip the vendor'd section of the package path
Browse files Browse the repository at this point in the history
If the package that easyjson is being used on is vendor'd
then we need to strip off the vendor'd bit of the pkg path

Fixes: mailru#29
See: golang/go#12739
  • Loading branch information
luma committed Feb 13, 2017
1 parent 99e922c commit 0c91aa7
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 39 deletions.
9 changes: 9 additions & 0 deletions parser/parser.go
Expand Up @@ -89,3 +89,12 @@ func (p *Parser) Parse(fname string, isDir bool) error {
}
return nil
}

// fixes vendored paths
func fixPkgPathVendoring(pkgPath string) string {
const vendor = "/vendor/"
if i := strings.LastIndex(pkgPath, vendor); i != -1 {
return pkgPath[i+len(vendor):]
}
return pkgPath
}
4 changes: 2 additions & 2 deletions parser/parser_unix.go
Expand Up @@ -22,9 +22,9 @@ func getPkgPath(fname string, isDir bool) (string, error) {
prefix := path.Join(p, "src") + "/"
if rel := strings.TrimPrefix(fname, prefix); rel != fname {
if !isDir {
return path.Dir(rel), nil
return fixPkgPathVendoring(path.Dir(rel)), nil
} else {
return path.Clean(rel), nil
return fixPkgPathVendoring(path.Clean(rel)), nil
}
}
}
Expand Down
74 changes: 37 additions & 37 deletions parser/parser_windows.go
@@ -1,37 +1,37 @@
package parser

import (
"fmt"
"os"
"path"
"strings"
)

func normalizePath(path string) string {
return strings.Replace(path, "\\", "/", -1)
}

func getPkgPath(fname string, isDir bool) (string, error) {
if !path.IsAbs(fname) {
pwd, err := os.Getwd()
if err != nil {
return "", err
}
fname = path.Join(pwd, fname)
}

fname = normalizePath(fname)

for _, p := range strings.Split(os.Getenv("GOPATH"), ";") {
prefix := path.Join(normalizePath(p), "src") + "/"
if rel := strings.TrimPrefix(fname, prefix); rel != fname {
if !isDir {
return path.Dir(rel), nil
} else {
return path.Clean(rel), nil
}
}
}

return "", fmt.Errorf("file '%v' is not in GOPATH", fname)
}
package parser

import (
"fmt"
"os"
"path"
"strings"
)

func normalizePath(path string) string {
return strings.Replace(path, "\\", "/", -1)
}

func getPkgPath(fname string, isDir bool) (string, error) {
if !path.IsAbs(fname) {
pwd, err := os.Getwd()
if err != nil {
return "", err
}
fname = path.Join(pwd, fname)
}

fname = normalizePath(fname)

for _, p := range strings.Split(os.Getenv("GOPATH"), ";") {
prefix := path.Join(normalizePath(p), "src") + "/"
if rel := strings.TrimPrefix(fname, prefix); rel != fname {
if !isDir {
return fixPkgPathVendoring(path.Dir(rel)), nil
} else {
return fixPkgPathVendoring(path.Clean(rel)), nil
}
}
}

return "", fmt.Errorf("file '%v' is not in GOPATH", fname)
}

0 comments on commit 0c91aa7

Please sign in to comment.