Fixed importing to the right version
diff --git a/dependency/resolver.go b/dependency/resolver.go
index 3eb5772..46dd3da 100644
--- a/dependency/resolver.go
+++ b/dependency/resolver.go
@@ -76,6 +76,9 @@
// version.
type VersionHandler interface {
+ // Process provides an opportunity to process the codebase for version setting.
+ Process(pkg string) error
+
// SetVersion sets the version for a package. An error is returned if there
// was a problem setting the version.
SetVersion(pkg string) error
@@ -88,6 +91,11 @@
// package as part of the installer.
type DefaultVersionHandler struct{}
+// Process a package to aide in version setting.
+func (d *DefaultVersionHandler) Process(pkg string) error {
+ return nil
+}
+
// SetVersion here sends a message when a package is found noting that it
// did not set the version.
func (d *DefaultVersionHandler) SetVersion(pkg string) error {
@@ -278,6 +286,8 @@
var failedDep string
for e := queue.Front(); e != nil; e = e.Next() {
dep := e.Value.(string)
+ t := strings.TrimPrefix(e.Value.(string), r.VendorDir+string(os.PathSeparator))
+ r.VersionHandler.Process(t)
//msg.Warn("#### %s ####", dep)
//msg.Info("Seen Count: %d", len(r.seen))
// Catch the outtermost dependency.
diff --git a/repo/installer.go b/repo/installer.go
index fd8ed5d..d69e811 100644
--- a/repo/installer.go
+++ b/repo/installer.go
@@ -165,25 +165,6 @@
Config: conf,
}
- // Prepopulate the import cache with imports from the top level dependencies
- // we are assuming are present.
- for _, d := range conf.Imports {
- v.Imported[d.Name] = true
- p := filepath.Join(i.VendorPath(), d.Name)
- f, deps, err := importer.Import(p)
- if f && err == nil {
-
- for _, dep := range deps {
- exists := ic.Get(dep.Name)
- if exists == nil && (dep.Reference != "" || dep.Repository != "") {
- ic.Add(dep.Name, dep)
- }
- }
- } else if err != nil {
- msg.Error("Unable to import from %s. Err: %s", d.Name, err)
- }
- }
-
// Update imports
res, err := dependency.NewResolver(base)
if err != nil {
@@ -421,12 +402,8 @@
Conflicts map[string]bool
}
-// SetVersion sets the version for a package. If that package version is already
-// set it handles the case by:
-// - keeping the already set version
-// - proviting messaging about the version conflict
-// TODO(mattfarina): The way version setting happens can be improved. Currently not optimal.
-func (d *VersionHandler) SetVersion(pkg string) (e error) {
+// Process imports dependencies for a package
+func (d *VersionHandler) Process(pkg string) (e error) {
root := util.GetRootFromPackage(pkg)
// Skip any references to the root package.
@@ -437,8 +414,6 @@
return nil
}
- v := d.Config.Imports.Get(root)
-
// We have not tried to import, yet.
// Should we look in places other than the root of the project?
if d.Imported[root] == false {
@@ -460,6 +435,27 @@
}
}
+ return
+}
+
+// SetVersion sets the version for a package. If that package version is already
+// set it handles the case by:
+// - keeping the already set version
+// - proviting messaging about the version conflict
+// TODO(mattfarina): The way version setting happens can be improved. Currently not optimal.
+func (d *VersionHandler) SetVersion(pkg string) (e error) {
+ root := util.GetRootFromPackage(pkg)
+
+ // Skip any references to the root package.
+ if root == d.RootPackage {
+ return nil
+ }
+ if d.Config.HasIgnore(root) || d.Config.HasIgnore(pkg) {
+ return nil
+ }
+
+ v := d.Config.Imports.Get(root)
+
dep := d.Use.Get(root)
if dep != nil && v != nil {
if v.Reference == "" && dep.Reference != "" {