Index: environs/tools/list.go |
=== modified file 'environs/tools/list.go' |
--- environs/tools/list.go 2013-04-15 01:01:43 +0000 |
+++ environs/tools/list.go 2013-04-16 01:19:41 +0000 |
@@ -1,6 +1,7 @@ |
package tools |
import ( |
+ "launchpad.net/juju-core/log" |
"launchpad.net/juju-core/state" |
"launchpad.net/juju-core/utils/set" |
"launchpad.net/juju-core/version" |
@@ -44,8 +45,17 @@ |
return seen.SortedValues() |
} |
-// Newest returns the tools in src with the greatest version. |
-func (src List) Newest() List { |
+// URLs returns download URLs for the tools in src, keyed by binary version. |
+func (src List) URLs() map[version.Binary]string { |
+ result := map[version.Binary]string{} |
+ for _, tools := range src { |
+ result[tools.Binary] = tools.URL |
+ } |
+ return result |
+} |
+ |
+// Newest returns the greatest version in src, and the tools with that version. |
+func (src List) Newest() (version.Number, List) { |
var result List |
var best version.Number |
for _, tools := range src { |
@@ -57,7 +67,7 @@ |
result = append(result, tools) |
} |
} |
- return result |
+ return best, result |
} |
// Difference returns the tools in src that are not in excluded. |
@@ -85,6 +95,7 @@ |
} |
} |
if len(result) == 0 { |
+ log.Errorf("environs/tools: cannot match %#v", f) |
return nil, ErrNoMatches |
} |
return result, nil |
@@ -115,7 +126,7 @@ |
if f.Released && tools.IsDev() { |
return false |
} |
- if f.Number != (version.Number{}) && tools.Number != f.Number { |
+ if f.Number != version.Zero && tools.Number != f.Number { |
return false |
} |
if f.Series != "" && tools.Series != f.Series { |