Skip to content

Commit c4f9c12

Browse files
committed
fix: variable resolver issue
1 parent 16fd7f8 commit c4f9c12

2 files changed

Lines changed: 21 additions & 35 deletions

File tree

cmd/run.go

Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ devspace --dependency my-dependency run any-command --any-command-flag
7777

7878
if rawConfig != nil && rawConfig.Config != nil {
7979
for _, cmd := range rawConfig.Config.Commands {
80-
runCmd.AddCommand(NewSpecificRunCommand(f, globalFlags, cmd, rawConfig.Resolver.ResolvedVariables()))
80+
runCmd.AddCommand(NewSpecificRunCommand(cmd))
8181
}
8282
}
8383
runCmd.Flags().StringVar(&cmd.Dependency, "dependency", "", "Run a command from a specific dependency")
@@ -309,7 +309,7 @@ func ExecuteCommand(ctx context.Context, cmd *latest.CommandConfig, variables ma
309309
return command.CommandWithEnv(ctx, dir, stdout, stderr, stdin, extraEnv, shellCommand, shellArgs...)
310310
}
311311

312-
// RunCommandCmd holds the cmd flags of an run command
312+
// RunCommandCmd holds the cmd flags of a run command
313313
type RunCommandCmd struct {
314314
*flags.GlobalFlags
315315

@@ -321,15 +321,7 @@ type RunCommandCmd struct {
321321
}
322322

323323
// NewSpecificRunCommand creates a new run command
324-
func NewSpecificRunCommand(f factory.Factory, globalFlags *flags.GlobalFlags, command *latest.CommandConfig, variables map[string]interface{}) *cobra.Command {
325-
cmd := &RunCommandCmd{
326-
GlobalFlags: globalFlags,
327-
Command: command,
328-
Variables: variables,
329-
Stdout: os.Stdout,
330-
Stderr: os.Stderr,
331-
}
332-
324+
func NewSpecificRunCommand(command *latest.CommandConfig) *cobra.Command {
333325
description := command.Description
334326
longDescription := command.Description
335327
if description == "" {
@@ -348,24 +340,9 @@ func NewSpecificRunCommand(f factory.Factory, globalFlags *flags.GlobalFlags, co
348340
Long: longDescription,
349341
Args: cobra.ArbitraryArgs,
350342
RunE: func(cobraCmd *cobra.Command, originalArgs []string) error {
351-
args, err := ParseArgs(cobraCmd, cmd.GlobalFlags, f.GetLog())
352-
if err != nil {
353-
return err
354-
}
355-
356-
if cmd.ConfigPath != "" {
357-
return cobraCmd.Parent().RunE(cobraCmd, originalArgs)
358-
}
359-
360-
plugin.SetPluginCommand(cobraCmd, args)
361-
return cmd.Run(f, args)
343+
return cobraCmd.Parent().RunE(cobraCmd, originalArgs)
362344
},
363345
}
364346
runCmd.DisableFlagParsing = true
365347
return runCmd
366348
}
367-
368-
func (cmd *RunCommandCmd) Run(f factory.Factory, args []string) error {
369-
devCtx := devspacecontext.NewContext(context.Background(), cmd.Variables, f.GetLog())
370-
return executeCommandWithAfter(devCtx.Context(), cmd.Command, args, cmd.Variables, devCtx.WorkingDir(), cmd.Stdout, cmd.Stderr, os.Stdin, devCtx.Log())
371-
}

pkg/devspace/config/loader/variable/resolver.go

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,32 @@ var AlwaysResolvePredefinedVars = []string{"DEVSPACE_NAME", "DEVSPACE_TMPDIR", "
2323
// NewResolver creates a new resolver that caches resolved variables in memory and in the provided cache
2424
func NewResolver(localCache localcache.Cache, predefinedVariableOptions *PredefinedVariableOptions, flags []string, log log.Logger) (Resolver, error) {
2525
memoryCache := map[string]interface{}{}
26+
err := MergeVarsWithFlags(memoryCache, flags)
27+
if err != nil {
28+
return nil, err
29+
}
30+
31+
return &resolver{
32+
memoryCache: memoryCache,
33+
localCache: localCache,
34+
options: predefinedVariableOptions,
35+
log: log,
36+
}, nil
37+
}
38+
39+
func MergeVarsWithFlags(vars map[string]interface{}, flags []string) error {
2640
for _, cmdVar := range flags {
2741
idx := strings.Index(cmdVar, "=")
2842
if idx == -1 {
29-
return nil, errors.Errorf("wrong --var format: %s, expected 'key=val'", cmdVar)
43+
return errors.Errorf("wrong --var format: %s, expected 'key=val'", cmdVar)
3044
}
3145

3246
name := strings.TrimSpace(cmdVar[:idx])
3347
value := convertStringValue(strings.TrimSpace(cmdVar[idx+1:]))
34-
memoryCache[name] = value
48+
vars[name] = value
3549
}
3650

37-
return &resolver{
38-
memoryCache: memoryCache,
39-
localCache: localCache,
40-
options: predefinedVariableOptions,
41-
log: log,
42-
}, nil
51+
return nil
4352
}
4453

4554
type resolver struct {

0 commit comments

Comments
 (0)