Skip to content

Commit a931e4d

Browse files
committed
Move to version array
1 parent a5e8520 commit a931e4d

File tree

32 files changed

+50
-292
lines changed

32 files changed

+50
-292
lines changed

pkg/config/draftconfig.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"errors"
55
"fmt"
66
"io/fs"
7+
"slices"
78

89
"github.com/Azure/draft/pkg/config/transformers"
910
"github.com/Azure/draft/pkg/config/validators"
@@ -34,7 +35,7 @@ type DraftConfig struct {
3435
DisplayName string `yaml:"displayName"`
3536
Description string `yaml:"description"`
3637
Type string `yaml:"type"`
37-
Versions string `yaml:"versions"`
38+
Versions []string `yaml:"versions"`
3839
DefaultVersion string `yaml:"defaultVersion"`
3940
Variables []*BuilderVar `yaml:"variables"`
4041
FileNameOverrideMap map[string]string `yaml:"filenameOverrideMap"`
@@ -232,13 +233,8 @@ func (d *DraftConfig) ApplyDefaultVariablesForVersion(version string) error {
232233
return fmt.Errorf("invalid version: %w", err)
233234
}
234235

235-
expectedConfigVersionRange, err := semver.ParseRange(d.Versions)
236-
if err != nil {
237-
return fmt.Errorf("invalid config version range: %w", err)
238-
}
239-
240-
if !expectedConfigVersionRange(v) {
241-
return fmt.Errorf("version %s is outside of config version range %s", version, d.Versions)
236+
if !slices.Contains(d.Versions, version) {
237+
return fmt.Errorf("invalid config version range: %s", version)
242238
}
243239

244240
for _, variable := range d.Variables {
@@ -376,11 +372,16 @@ func (d *DraftConfig) DeepCopy() *DraftConfig {
376372
DisplayName: d.DisplayName,
377373
Description: d.Description,
378374
Type: d.Type,
379-
Versions: d.Versions,
375+
Versions: make([]string, len(d.Versions)),
380376
DefaultVersion: d.DefaultVersion,
381377
Variables: make([]*BuilderVar, len(d.Variables)),
382378
FileNameOverrideMap: make(map[string]string),
383379
}
380+
381+
for i, version := range d.Versions {
382+
newConfig.Versions[i] = version
383+
}
384+
384385
for i, variable := range d.Variables {
385386
newConfig.Variables[i] = variable.DeepCopy()
386387
}

pkg/config/draftconfig_template_test.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,10 @@ func loadTemplatesWithValidation() error {
121121
return fmt.Errorf("template %s has an invalid type: %s", path, currTemplate.Type)
122122
}
123123

124-
if _, err := semver.ParseRange(currTemplate.Versions); err != nil {
125-
return fmt.Errorf("template %s has an invalid version range: %s", path, currTemplate.Versions)
126-
}
127-
128-
if _, err := GetValidTemplateVersions(currTemplate.Versions); err != nil {
129-
return fmt.Errorf("template %s has an invalid or unboud version range %s: %w", path, currTemplate.Versions, err)
124+
for _, version := range currTemplate.Versions {
125+
if _, err := semver.Parse(version); err != nil {
126+
return fmt.Errorf("template %s has an invalid version: %s", path, version)
127+
}
130128
}
131129

132130
referenceVarMap := map[string]*BuilderVar{}

pkg/config/draftconfig_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ func TestApplyDefaultVariablesForVersion(t *testing.T) {
211211
testName: "excludeOutOfVersionRangeVariables",
212212
version: "0.0.1",
213213
draftConfig: DraftConfig{
214-
Versions: ">=0.0.1 <=0.0.2",
214+
Versions: []string{"0.0.1", "0.0.2"},
215215
Variables: []*BuilderVar{
216216
{
217217
Name: "var1",
@@ -239,7 +239,7 @@ func TestApplyDefaultVariablesForVersion(t *testing.T) {
239239
testName: "emptyInputVersion",
240240
version: "",
241241
draftConfig: DraftConfig{
242-
Versions: ">=0.0.1 <=0.0.2",
242+
Versions: []string{"0.0.1", "0.0.2"},
243243
Variables: []*BuilderVar{
244244
{
245245
Name: "var1",
@@ -265,7 +265,7 @@ func TestApplyDefaultVariablesForVersion(t *testing.T) {
265265
testName: "inputVersionOutOfRange",
266266
version: "0.0.3",
267267
draftConfig: DraftConfig{
268-
Versions: ">=0.0.1 <=0.0.2",
268+
Versions: []string{"0.0.1", "0.0.2"},
269269
Variables: []*BuilderVar{
270270
{
271271
Name: "var1",
@@ -285,13 +285,13 @@ func TestApplyDefaultVariablesForVersion(t *testing.T) {
285285
},
286286
},
287287
},
288-
wantErrMsg: "version 0.0.3 is outside of config version range >=0.0.1 <=0.0.2",
288+
wantErrMsg: "invalid config version range: 0.0.3",
289289
},
290290
{
291291
testName: "overwriteDevfaultValue",
292292
version: "0.0.2",
293293
draftConfig: DraftConfig{
294-
Versions: ">=0.0.1 <=0.0.2",
294+
Versions: []string{"0.0.1", "0.0.2"},
295295
Variables: []*BuilderVar{
296296
{
297297
Name: "var1",
@@ -320,7 +320,7 @@ func TestApplyDefaultVariablesForVersion(t *testing.T) {
320320
testName: "referenceVarOverwrite",
321321
version: "0.0.2",
322322
draftConfig: DraftConfig{
323-
Versions: ">=0.0.1 <=0.0.2",
323+
Versions: []string{"0.0.1", "0.0.2"},
324324
Variables: []*BuilderVar{
325325
{
326326
Name: "var1",

pkg/config/draftconfig_utils.go

Lines changed: 0 additions & 149 deletions
This file was deleted.

pkg/config/draftconfig_utils_test.go

Lines changed: 0 additions & 88 deletions
This file was deleted.

pkg/handlers/template_utils.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"io/fs"
66
"path/filepath"
77
"runtime"
8+
"slices"
89
"strings"
910

1011
"github.com/Azure/draft/pkg/config"
@@ -90,18 +91,13 @@ func loadTemplates() error {
9091
}
9192

9293
// IsValidVersion checks if a version is valid for a given version range
93-
func IsValidVersion(versionRange, version string) bool {
94-
v, err := semver.Parse(version)
94+
func IsValidVersion(versions []string, version string) bool {
95+
_, err := semver.Parse(version)
9596
if err != nil {
9697
return false
9798
}
9899

99-
expectedRange, err := semver.ParseRange(versionRange)
100-
if err != nil {
101-
return false
102-
}
103-
104-
return expectedRange(v)
100+
return slices.Contains(versions, version)
105101
}
106102

107103
func sanatizeTemplateSrcDir(src string) string {

template/addons/azure/webapp_routing/draft.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
templateName: "app-routing-ingress"
22
description: "This template is used to create an ingress resource for use with the app-routing addon in AKS"
3-
versions: "0.0.1"
3+
versions: ["0.0.1"]
44
defaultVersion: "0.0.1"
55
type: "manifest"
66
variables:

0 commit comments

Comments
 (0)