Skip to content

Commit

Permalink
WIP: Added validation if someone specifies a version on a bundle
Browse files Browse the repository at this point in the history
Signed-off-by: David Gannon <19214156+dgannon991@users.noreply.github.com>
  • Loading branch information
dgannon991 committed Jun 4, 2024
1 parent 59974ae commit 2a2d8e8
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 2 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ replace (

require (
get.porter.sh/magefiles v0.6.7
github.com/Masterminds/semver v1.5.0
github.com/Masterminds/semver/v3 v3.2.1
github.com/PaesslerAG/jsonpath v0.1.1
github.com/carolynvs/aferox v0.3.0
Expand Down Expand Up @@ -86,7 +87,6 @@ require (
require (
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
github.com/Masterminds/semver v1.5.0 // indirect
github.com/Microsoft/go-winio v0.6.2 // indirect
github.com/Microsoft/hcsshim v0.11.5 // indirect
github.com/PaesslerAG/gval v1.2.2 // indirect
Expand Down
34 changes: 33 additions & 1 deletion pkg/linter/linter.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"get.porter.sh/porter/pkg/portercontext"
"get.porter.sh/porter/pkg/tracing"
"get.porter.sh/porter/pkg/yaml"
"github.com/Masterminds/semver"
"github.com/dustin/go-humanize"
)

Expand Down Expand Up @@ -210,7 +211,7 @@ func (l *Linter) Lint(ctx context.Context, m *manifest.Manifest) (Results, error
return nil, span.Error(fmt.Errorf("error validating action: %s", action.name))
}
results = append(results, res...)
}
}

deps := make(map[string]interface{}, len(m.Dependencies.Requires))
for _, dep := range m.Dependencies.Requires {
Expand Down Expand Up @@ -259,6 +260,37 @@ func (l *Linter) Lint(ctx context.Context, m *manifest.Manifest) (Results, error
results = append(results, r...)
}

span.Debug("Getting versions for each mixin used in the manifest...")
for _, mixin := range m.Mixins {
if mapConfig, ok := mixin.Config.(map[string]interface{}); ok {
if v, exists := mapConfig["version"]; exists {

if versionConstraint, ok := v.(string); ok {
installedMeta, err := l.Mixins.GetMetadata(ctx, mixin.Name)
if err != nil {
return nil, span.Error(fmt.Errorf("unable to get metadata from mixin %s: %w", mixin.Name, err))
}
installedVersion := installedMeta.GetVersionInfo().Version

c, err := semver.NewConstraint(versionConstraint)
if err != nil {
return nil, span.Error(fmt.Errorf("invalid constraint for mixin%s: %s. %w", mixin.Name, versionConstraint, err))
}

v, err := semver.NewVersion(installedVersion)
if err != nil {
return nil, span.Error(fmt.Errorf("invalid version number from mixin %s: %s. %w", mixin.Name, installedVersion, err))
}

if !c.Check(v) {
return nil, span.Error(fmt.Errorf("mixin %s is installed at version %s but your bundle requires version %s", mixin.Name, installedVersion, versionConstraint))
}
}
}
}
fmt.Println()
}

return results, nil
}

Expand Down

0 comments on commit 2a2d8e8

Please sign in to comment.