From abd2e24e07400d89e8fe7bb39a417cb3ad5980b2 Mon Sep 17 00:00:00 2001 From: sophia Date: Mon, 8 Nov 2021 14:39:54 -0600 Subject: [PATCH] Add compare method for comparing box versions --- internal/core/box.go | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/internal/core/box.go b/internal/core/box.go index a5b383cba..7c7df681e 100644 --- a/internal/core/box.go +++ b/internal/core/box.go @@ -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 {