Skip to content

Commit 4ebc4a9

Browse files
committed
refactor: fix init problem & move validation
1 parent b08646b commit 4ebc4a9

15 files changed

Lines changed: 126 additions & 145 deletions

File tree

cmd/init.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@ const devspaceFolderGitignore = "\n\n# Ignore DevSpace cache and log folder\n.de
4949

5050
const (
5151
// Dockerfile not found options
52-
UseExistingDockerfileOption = "Use the Dockerfile in ./Dockerfile"
53-
CreateDockerfileOption = "Create a Dockerfile for this project"
54-
EnterDockerfileOption = "Enter path to a different Dockerfile"
5552
DeployOptionHelm = "helm"
5653
DeployOptionKubectl = "kubectl"
5754
DeployOptionKustomize = "kustomize"
@@ -739,7 +736,8 @@ func (cmd *InitCmd) render(f factory.Factory, config *latest.Config) (string, er
739736
}
740737
err = renderCmd.RunDefault(f)
741738
if err != nil {
742-
return "", err
739+
f.GetLog().Debugf("error rendering chart: %v", err)
740+
return "", nil
743741
}
744742

745743
return writer.String(), nil

cmd/sync.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"fmt"
66
runtimevar "github.com/loft-sh/devspace/pkg/devspace/config/loader/variable/runtime"
77
"github.com/loft-sh/devspace/pkg/devspace/config/localcache"
8+
"github.com/loft-sh/devspace/pkg/devspace/config/versions"
89
devspacecontext "github.com/loft-sh/devspace/pkg/devspace/context"
910
"github.com/loft-sh/devspace/pkg/devspace/kubectl"
1011
"github.com/loft-sh/devspace/pkg/devspace/services/sync"
@@ -335,7 +336,7 @@ func (cmd *SyncCmd) applyFlagsToSyncConfig(syncConfig *latest.SyncConfig, option
335336
}
336337

337338
if cmd.InitialSync != "" {
338-
if !loader.ValidInitialSyncStrategy(latest.InitialSyncStrategy(cmd.InitialSync)) {
339+
if !versions.ValidInitialSyncStrategy(latest.InitialSyncStrategy(cmd.InitialSync)) {
339340
return options, errors.Errorf("--initial-sync is not valid '%s'", cmd.InitialSync)
340341
}
341342

pkg/devspace/config/loader/imports.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,6 @@ func ResolveImports(ctx context.Context, resolver variable.Resolver, basePath st
5555
return nil, err
5656
}
5757

58-
err = Validate(imports)
59-
if err != nil {
60-
return nil, err
61-
}
62-
6358
mergedMap := map[string]interface{}{}
6459
err = util.Convert(rawData, mergedMap)
6560
if err != nil {

pkg/devspace/config/loader/loader.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -364,12 +364,6 @@ func reloadVariables(resolver variable.Resolver, rawConfig map[string]interface{
364364
return err
365365
}
366366

367-
// validate variables
368-
err = validateVars(loadedVars)
369-
if err != nil {
370-
return err
371-
}
372-
373367
// update the used vars in the resolver
374368
resolver.UpdateVars(loadedVars)
375369
return nil

pkg/devspace/config/loader/parser.go

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"github.com/loft-sh/devspace/pkg/devspace/config/versions/latest"
99
"github.com/loft-sh/devspace/pkg/util/log"
1010
"github.com/loft-sh/devspace/pkg/util/yamlutil"
11-
"github.com/pkg/errors"
1211
"gopkg.in/yaml.v3"
1312
)
1413

@@ -114,26 +113,23 @@ func fillVariablesAndParse(ctx context.Context, resolver variable.Resolver, prep
114113
return nil, nil, err
115114
}
116115

117-
latestConfig, err := Convert(preparedConfigInterface.(map[string]interface{}), log)
116+
latestConfig, err := versions.Parse(preparedConfigInterface.(map[string]interface{}), log)
118117
if err != nil {
119118
return nil, nil, err
120119
}
121120

122121
return latestConfig, preparedConfigInterface.(map[string]interface{}), nil
123122
}
124123

125-
func Convert(preparedConfig map[string]interface{}, log log.Logger) (*latest.Config, error) {
126-
// Now convert the whole config to latest
127-
latestConfig, err := versions.Parse(preparedConfig, log)
128-
if err != nil {
129-
return nil, errors.Wrap(err, "convert config")
130-
}
131-
132-
// now we validate the config
133-
err = Validate(latestConfig)
134-
if err != nil {
135-
return nil, err
124+
func EachDevContainer(devPod *latest.DevPod, each func(devContainer *latest.DevContainer) bool) {
125+
if len(devPod.Containers) > 0 {
126+
for _, devContainer := range devPod.Containers {
127+
cont := each(devContainer)
128+
if !cont {
129+
break
130+
}
131+
}
132+
} else {
133+
_ = each(&devPod.DevContainer)
136134
}
137-
138-
return latestConfig, nil
139135
}

pkg/devspace/config/loader/variable/legacy/replace.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package legacy
22

33
import (
44
"fmt"
5+
"github.com/loft-sh/devspace/pkg/util/dockerfile"
56
"regexp"
67
"strings"
78

@@ -98,7 +99,7 @@ func resolveImage(value string, config config2.Config, dependencies []types.Depe
9899
}
99100

100101
// strip docker image name
101-
image, originalTag, err := imageselector.GetStrippedDockerImageName(resolvedImage)
102+
image, originalTag, err := dockerfile.GetStrippedDockerImageName(resolvedImage)
102103
if err != nil {
103104
return false, false, "", nil
104105
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package versions
2+
3+
import "github.com/loft-sh/devspace/pkg/devspace/config/versions/latest"
4+
5+
func adjustConfig(config *latest.Config) {
6+
for name, v := range config.Vars {
7+
v.Name = name
8+
}
9+
for name, command := range config.Commands {
10+
command.Name = name
11+
}
12+
for name, pullSecret := range config.PullSecrets {
13+
pullSecret.Name = name
14+
}
15+
for name, devPod := range config.Dev {
16+
devPod.Name = name
17+
for c, v := range devPod.Containers {
18+
v.Container = c
19+
}
20+
}
21+
for name, pipeline := range config.Pipelines {
22+
pipeline.Name = name
23+
}
24+
for name, dep := range config.Dependencies {
25+
dep.Name = name
26+
}
27+
if config.Images != nil {
28+
newObjs := map[string]*latest.Image{}
29+
for k, v := range config.Images {
30+
if v != nil {
31+
newObjs[k] = v
32+
}
33+
}
34+
config.Images = newObjs
35+
}
36+
if config.Deployments != nil {
37+
newObjs := map[string]*latest.DeploymentConfig{}
38+
for k, v := range config.Deployments {
39+
if v != nil {
40+
v.Name = k
41+
newObjs[k] = v
42+
}
43+
}
44+
config.Deployments = newObjs
45+
}
46+
if config.Hooks != nil {
47+
newObjs := []*latest.HookConfig{}
48+
for _, v := range config.Hooks {
49+
if v != nil {
50+
newObjs = append(newObjs, v)
51+
}
52+
}
53+
config.Hooks = newObjs
54+
}
55+
}
Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
1-
package loader
1+
package versions
22

33
import (
44
"fmt"
5-
6-
"github.com/loft-sh/devspace/pkg/util/yamlutil"
7-
85
"strings"
96

107
jsonyaml "github.com/ghodss/yaml"
11-
"github.com/loft-sh/devspace/pkg/devspace/config/versions/latest"
12-
"github.com/loft-sh/devspace/pkg/devspace/imageselector"
13-
"github.com/loft-sh/devspace/pkg/util/encoding"
148
"github.com/pkg/errors"
159
"gopkg.in/yaml.v3"
1610
k8sv1 "k8s.io/api/core/v1"
11+
12+
"github.com/loft-sh/devspace/pkg/devspace/config/versions/latest"
13+
"github.com/loft-sh/devspace/pkg/util/dockerfile"
14+
"github.com/loft-sh/devspace/pkg/util/encoding"
15+
"github.com/loft-sh/devspace/pkg/util/yamlutil"
1716
)
1817

1918
// ValidInitialSyncStrategy checks if strategy is valid
@@ -278,7 +277,7 @@ func validateImages(config *latest.Config) error {
278277
if imageConf.Image == "" {
279278
return errors.Errorf("images.%s.image is required", imageConfigName)
280279
}
281-
if _, tag, _ := imageselector.GetStrippedDockerImageName(imageConf.Image); tag != "" {
280+
if _, tag, _ := dockerfile.GetStrippedDockerImageName(imageConf.Image); tag != "" {
282281
return errors.Errorf("images.%s.image '%s' can not have tag '%s'", imageConfigName, imageConf.Image, tag)
283282
}
284283
if imageConf.Custom != nil && imageConf.Custom.Command == "" && len(imageConf.Custom.Commands) == 0 {
@@ -396,16 +395,3 @@ func validateDevContainer(path string, devContainer *latest.DevContainer, nameRe
396395

397396
return nil
398397
}
399-
400-
func EachDevContainer(devPod *latest.DevPod, each func(devContainer *latest.DevContainer) bool) {
401-
if len(devPod.Containers) > 0 {
402-
for _, devContainer := range devPod.Containers {
403-
cont := each(devContainer)
404-
if !cont {
405-
break
406-
}
407-
}
408-
} else {
409-
_ = each(&devPod.DevContainer)
410-
}
411-
}

pkg/devspace/config/loader/validate_test.go renamed to pkg/devspace/config/versions/validate_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package loader
1+
package versions
22

33
import (
44
"fmt"

pkg/devspace/config/versions/versions.go

Lines changed: 6 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -165,59 +165,13 @@ func Parse(data map[string]interface{}, log log.Logger) (*latest.Config, error)
165165
// Filter out empty images, deployments etc.
166166
adjustConfig(latestConfigConverted)
167167

168-
return latestConfigConverted, nil
169-
}
170-
171-
func adjustConfig(config *latest.Config) {
172-
for name, v := range config.Vars {
173-
v.Name = name
174-
}
175-
for name, command := range config.Commands {
176-
command.Name = name
177-
}
178-
for name, pullSecret := range config.PullSecrets {
179-
pullSecret.Name = name
180-
}
181-
for name, devPod := range config.Dev {
182-
devPod.Name = name
183-
for c, v := range devPod.Containers {
184-
v.Container = c
185-
}
186-
}
187-
for name, pipeline := range config.Pipelines {
188-
pipeline.Name = name
189-
}
190-
for name, dep := range config.Dependencies {
191-
dep.Name = name
192-
}
193-
if config.Images != nil {
194-
newObjs := map[string]*latest.Image{}
195-
for k, v := range config.Images {
196-
if v != nil {
197-
newObjs[k] = v
198-
}
199-
}
200-
config.Images = newObjs
201-
}
202-
if config.Deployments != nil {
203-
newObjs := map[string]*latest.DeploymentConfig{}
204-
for k, v := range config.Deployments {
205-
if v != nil {
206-
v.Name = k
207-
newObjs[k] = v
208-
}
209-
}
210-
config.Deployments = newObjs
211-
}
212-
if config.Hooks != nil {
213-
newObjs := []*latest.HookConfig{}
214-
for _, v := range config.Hooks {
215-
if v != nil {
216-
newObjs = append(newObjs, v)
217-
}
218-
}
219-
config.Hooks = newObjs
168+
// validate config
169+
err = Validate(latestConfigConverted)
170+
if err != nil {
171+
return nil, err
220172
}
173+
174+
return latestConfigConverted, nil
221175
}
222176

223177
// getProfiles loads a certain profile

0 commit comments

Comments
 (0)