diff --git a/internal/cli/kraft/run/runner_kraftfile_runtime.go b/internal/cli/kraft/run/runner_kraftfile_runtime.go index 35316f1ce..598860012 100644 --- a/internal/cli/kraft/run/runner_kraftfile_runtime.go +++ b/internal/cli/kraft/run/runner_kraftfile_runtime.go @@ -340,9 +340,12 @@ func (runner *runnerKraftfileRuntime) Prepare(ctx context.Context, opts *RunOpti } for _, entry := range runtime.Initrd().Env() { - split := strings.SplitN(entry, "=", 2) + k, v, ok := strings.Cut(entry, "=") + if !ok { + continue + } - machine.Spec.Env[split[0]] = split[1] + machine.Spec.Env[k] = v } machine.Spec.ApplicationArgs = runtime.Initrd().Args() diff --git a/internal/cli/kraft/run/runner_package.go b/internal/cli/kraft/run/runner_package.go index 390d5884e..5fd1f7765 100644 --- a/internal/cli/kraft/run/runner_package.go +++ b/internal/cli/kraft/run/runner_package.go @@ -345,13 +345,12 @@ func (runner *runnerPackage) Prepare(ctx context.Context, opts *RunOptions, mach } for _, env := range v.Config.Env { - if strings.ContainsRune(env, '=') { - parts := strings.SplitN(env, "=", 2) - machine.Spec.Env[parts[0]] = parts[1] + k, v, ok := strings.Cut(env, "=") + if !ok { continue } - machine.Spec.Env[env] = "" + machine.Spec.Env[k] = v } default: } diff --git a/internal/cli/kraft/run/utils.go b/internal/cli/kraft/run/utils.go index 99bbb2021..5d199dd61 100644 --- a/internal/cli/kraft/run/utils.go +++ b/internal/cli/kraft/run/utils.go @@ -396,9 +396,12 @@ func (opts *RunOptions) prepareRootfs(ctx context.Context, machine *machineapi.M } for _, entry := range ramfs.Env() { - split := strings.SplitN(entry, "=", 2) + k, v, ok := strings.Cut(entry, "=") + if !ok { + continue + } - machine.Spec.Env[split[0]] = split[1] + machine.Spec.Env[k] = v } machine.Spec.ApplicationArgs = ramfs.Args() @@ -429,9 +432,8 @@ func (opts *RunOptions) parseKraftfileEnv(_ context.Context, project app.Applica continue } - hostVal := os.Getenv(k) - if hostVal != "" { - machine.Spec.Env[k] = hostVal + if v, ok := os.LookupEnv(k); ok { + machine.Spec.Env[k] = v } } @@ -444,11 +446,11 @@ func (opts *RunOptions) parseEnvs(_ context.Context, machine *machineapi.Machine } for _, env := range opts.Env { - if strings.ContainsRune(env, '=') { - split := strings.SplitN(env, "=", 2) - machine.Spec.Env[split[0]] = split[1] - } else { - machine.Spec.Env[env] = os.Getenv(env) + k, v, ok := strings.Cut(env, "=") + if ok { + machine.Spec.Env[k] = v + } else if v, ok := os.LookupEnv(k); ok { + machine.Spec.Env[k] = v } }