Skip to content

Commit 9fe8a4c

Browse files
committed
refactor: allow image:tag in images.*.image
1 parent 4ebc4a9 commit 9fe8a4c

4 files changed

Lines changed: 33 additions & 6 deletions

File tree

pkg/devspace/config/versions/adjust.go

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package versions
22

3-
import "github.com/loft-sh/devspace/pkg/devspace/config/versions/latest"
3+
import (
4+
"github.com/loft-sh/devspace/pkg/devspace/config/versions/latest"
5+
"github.com/loft-sh/devspace/pkg/util/dockerfile"
6+
"github.com/pkg/errors"
7+
)
48

5-
func adjustConfig(config *latest.Config) {
9+
func adjustConfig(config *latest.Config) error {
610
for name, v := range config.Vars {
711
v.Name = name
812
}
@@ -28,6 +32,18 @@ func adjustConfig(config *latest.Config) {
2832
newObjs := map[string]*latest.Image{}
2933
for k, v := range config.Images {
3034
if v != nil {
35+
image, tag, err := dockerfile.GetStrippedDockerImageName(v.Image)
36+
if err != nil {
37+
return errors.Errorf("error parsing images.%s.image: '%s': %v", k, v.Image, err)
38+
}
39+
if tag != "" {
40+
v.Image = image
41+
oldTags := v.Tags
42+
v.Tags = []string{}
43+
v.Tags = append(v.Tags, tag)
44+
v.Tags = append(v.Tags, oldTags...)
45+
}
46+
3147
newObjs[k] = v
3248
}
3349
}
@@ -52,4 +68,5 @@ func adjustConfig(config *latest.Config) {
5268
}
5369
config.Hooks = newObjs
5470
}
71+
return nil
5572
}

pkg/devspace/config/versions/validate.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ func Validate(config *latest.Config) error {
4646
return err
4747
}
4848

49+
err = validateVars(config.Vars)
50+
if err != nil {
51+
return err
52+
}
53+
4954
err = validatePipelines(config)
5055
if err != nil {
5156
return err

pkg/devspace/config/versions/versions.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,10 @@ func Parse(data map[string]interface{}, log log.Logger) (*latest.Config, error)
163163
latestConfigConverted.Version = latest.Version
164164

165165
// Filter out empty images, deployments etc.
166-
adjustConfig(latestConfigConverted)
166+
err = adjustConfig(latestConfigConverted)
167+
if err != nil {
168+
return nil, err
169+
}
167170

168171
// validate config
169172
err = Validate(latestConfigConverted)

pkg/devspace/config/versions/versions_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,21 @@ import (
1111
func TestParse(t *testing.T) {
1212
config, err := Parse(map[string]interface{}{
1313
"version": "DoesNotExist",
14+
"name": "test",
1415
}, log.Discard)
1516
assert.Error(t, err, "Unrecognized config version DoesNotExist. Please upgrade devspace with `devspace upgrade`")
1617
assert.Equal(t, true, config == nil, "Config from invalid version not nil")
1718

1819
config, err = Parse(map[string]interface{}{
1920
"version": latest.Version,
21+
"name": "test",
2022
"images": &map[string]*latest.Image{
21-
"TestImg": {
22-
Image: "TestImg",
23+
"test-img": {
24+
Image: "testimage",
2325
},
2426
},
2527
}, log.Discard)
2628
assert.NilError(t, err, "Error parsing map without defined version: %v")
2729
assert.Equal(t, latest.Version, config.Version, "Conversion to latest version not correct")
28-
assert.Equal(t, "TestImg", config.Images["TestImg"].Image, "Conversion to latest version not correct")
30+
assert.Equal(t, "testimage", config.Images["test-img"].Image, "Conversion to latest version not correct")
2931
}

0 commit comments

Comments
 (0)