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 != "" {