Fixes #371: Warn when name/location mismatch
When the package in the glide.yaml does not match the current
location in the GOPATH warn the users.
diff --git a/action/ensure.go b/action/ensure.go
index 8d45bdd..46dc45e 100644
--- a/action/ensure.go
+++ b/action/ensure.go
@@ -5,11 +5,13 @@
"os"
"os/exec"
"path"
+ "path/filepath"
"strings"
"github.com/Masterminds/glide/cfg"
"github.com/Masterminds/glide/msg"
gpath "github.com/Masterminds/glide/path"
+ "github.com/Masterminds/glide/util"
)
// EnsureConfig loads and returns a config file.
@@ -33,6 +35,25 @@
msg.Die("Failed to parse %s: %s", yamlpath, err)
}
+ b := filepath.Dir(yamlpath)
+ buildContext, err := util.GetBuildContext()
+ if err != nil {
+ msg.Die("Failed to build an import context while ensuring config: %s", err)
+ }
+ cwd, err := os.Getwd()
+ if err != nil {
+ msg.Err("Unable to get the current working directory")
+ } else {
+ // Determining a package name requires a relative path
+ b, err = filepath.Rel(b, cwd)
+ if err == nil {
+ name := buildContext.PackageName(b)
+ if name != conf.Name {
+ msg.Warn("The name listed in the config file (%s) does not match the current location (%s)", conf.Name, name)
+ }
+ }
+ }
+
return conf
}
diff --git a/util/util.go b/util/util.go
index 5cdc0f4..ab67610 100644
--- a/util/util.go
+++ b/util/util.go
@@ -254,7 +254,7 @@
// There may not be any top level Go source files but the project may
// still be within the GOPATH.
if strings.HasPrefix(base, b.GOPATH) {
- p := strings.TrimPrefix(base, b.GOPATH)
+ p := strings.TrimPrefix(base, filepath.Join(b.GOPATH, "src"))
return strings.Trim(p, string(os.PathSeparator))
}
}