~rogpeppe/juju-core/041-config-agent-version

« back to all changes in this revision

Viewing changes to environs/tools.go

  • Committer: Roger Peppe
  • Date: 2012-08-30 12:25:49 UTC
  • mfrom: (443.1.7 juju-core)
  • Revision ID: roger.peppe@canonical.com-20120830122549-jmn0ledsyj1uxhd2
merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
202
202
        }
203
203
}
204
204
 
205
 
// BestTools returns the best set of tools in the ToolsList that are
206
 
// compatible with the given version, or nil if no such tools are found.
 
205
// BestTools returns the most recent version
 
206
// from the set of tools in the ToolsList that are
 
207
// compatible with the given version, and with a version
 
208
// number <= vers.Number, or nil if no such tools are found.
207
209
// If dev is true, it will consider development versions of the tools
208
210
// even if vers is not a development version.
209
211
func BestTools(list *ToolsList, vers version.Binary, dev bool) *state.Tools {
221
223
                if t.Major != vers.Major ||
222
224
                        t.Series != vers.Series ||
223
225
                        t.Arch != vers.Arch ||
224
 
                        !allowDev && t.IsDev() {
 
226
                        !allowDev && t.IsDev() ||
 
227
                        vers.Number.Less(t.Number) {
225
228
                        continue
226
229
                }
227
230
                if bestTools == nil || bestTools.Number.Less(t.Number) {
377
380
}
378
381
 
379
382
// FindTools tries to find a set of tools compatible with the given
380
 
// version from the given environment.  If no tools are found and
381
 
// there's no other error, a NotFoundError is returned.  If there's
382
 
// anything compatible in the environ's Storage, it gets precedence over
383
 
// anything in its PublicStorage.
 
383
// version from the given environment.  The latest version found with a
 
384
// number <= vers.Number will be used.
 
385
// 
 
386
// If no tools are found and there's no other error, a NotFoundError is
 
387
// returned.  If there's anything compatible in the environ's Storage,
 
388
// it gets precedence over anything in its PublicStorage.
384
389
func FindTools(env Environ, vers version.Binary) (*state.Tools, error) {
385
390
        toolsList, err := ListTools(env, vers.Major)
386
391
        if err != nil {