AUse version constraints to find boxes
This commit is contained in:
parent
e77cb42171
commit
a99bfc65f9
@ -177,10 +177,19 @@ func (s *State) boxFind(
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if req.Version == "" {
|
||||
req.Version = ">= 0"
|
||||
}
|
||||
versionConstraint, err := version.NewConstraint(req.Version)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for e := raw.Next(); e != nil; e = raw.Next() {
|
||||
boxIndexEntry := e.(*boxIndexRecord)
|
||||
if req.Version != "" {
|
||||
if boxIndexEntry.Version != req.Version {
|
||||
boxVersion, _ := version.NewVersion(boxIndexEntry.Version)
|
||||
if !versionConstraint.Check(boxVersion) {
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
@ -192,5 +192,28 @@ func TestBox(t *testing.T) {
|
||||
})
|
||||
require.NoError(err)
|
||||
require.Nil(b7)
|
||||
|
||||
b8, err := s.BoxFind(&vagrant_plugin_sdk.Ref_Box{
|
||||
Name: "hashicorp/bionic",
|
||||
Version: "~> 1.2",
|
||||
})
|
||||
require.NoError(err)
|
||||
require.Equal(b8.Name, "hashicorp/bionic")
|
||||
require.Equal(b8.Version, "1.2.4")
|
||||
|
||||
b9, err := s.BoxFind(&vagrant_plugin_sdk.Ref_Box{
|
||||
Name: "hashicorp/bionic",
|
||||
Version: "> 1.0, < 3.0",
|
||||
})
|
||||
require.NoError(err)
|
||||
require.Equal(b9.Name, "hashicorp/bionic")
|
||||
require.Equal(b9.Version, "1.2.4")
|
||||
|
||||
b10, err := s.BoxFind(&vagrant_plugin_sdk.Ref_Box{
|
||||
Name: "hashicorp/bionic",
|
||||
Version: "< 1.0",
|
||||
})
|
||||
require.NoError(err)
|
||||
require.Nil(b10)
|
||||
})
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user