Add compare method for comparing box versions

This commit is contained in:
sophia 2021-11-08 14:39:54 -06:00 committed by Paul Hinze
parent aeeddd7967
commit abd2e24e07
No known key found for this signature in database
GPG Key ID: B69DEDF2D55501C0

View File

@ -1,11 +1,11 @@
package core
import (
"errors"
"os"
"time"
"github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-version"
"github.com/hashicorp/vagrant-plugin-sdk/core"
"github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"
"google.golang.org/protobuf/types/known/timestamppb"
@ -129,35 +129,32 @@ func (b *Box) Version() (version string, err error) {
return b.box.Version, nil
}
func (b *Box) GreaterThanOrEqual(box core.Box) (bool, error) {
func (b *Box) Compare(box core.Box) (int, error) {
name, err := box.Name()
if err != nil {
return false, err
return 0, err
}
version, err := box.Version()
ver, err := box.Version()
if err != nil {
return false, err
return 0, err
}
provider, err := box.Provider()
if err != nil {
return false, err
return 0, err
}
if b.box.Name == name && b.box.Provider == provider {
if b.box.Version >= version {
return true, nil
}
return false, nil
}
return false, errors.New("Box name and provider does not match, can't compare")
}
func (b *Box) LessThan(box core.Box) (bool, error) {
gte, err := b.GreaterThanOrEqual(box)
boxVersion, err := version.NewVersion(
b.box.Name + "-" + b.box.Version + "-" + b.box.Provider)
if err != nil {
return false, err
return 0, nil
}
return !gte, nil
otherVersion, err := version.NewVersion(
name + "-" + ver + "-" + provider)
if err != nil {
return 0, nil
}
return boxVersion.Compare(otherVersion), nil
}
func (b *Box) Save() error {