diff --git a/internal/service/deploy/service.go b/internal/service/deploy/service.go index 6a6eafe..d70ff76 100644 --- a/internal/service/deploy/service.go +++ b/internal/service/deploy/service.go @@ -77,16 +77,7 @@ func (s *Service) Deploy(ctx context.Context, options Options) (Result, error) { wranglerCfg.CompatibilityDate = options.CompatDate } if len(options.Var) > 0 { - if wranglerCfg.Vars == nil { - wranglerCfg.Vars = map[string]string{} - } - for _, item := range options.Var { - key, value, ok := splitPair(item) - if ok { - wranglerCfg.Vars[key] = value - project.Bindings.Vars[key] = value - } - } + applyVars(&project, &wranglerCfg, options.Var) } for _, route := range options.Route { wranglerCfg.Routes = config.UpsertRoute(wranglerCfg.Routes, config.WranglerRoute{Pattern: route}) @@ -227,6 +218,26 @@ func splitPair(value string) (string, string, bool) { return "", "", false } +func applyVars(project *config.Project, wranglerCfg *config.WranglerConfig, vars []string) { + if len(vars) == 0 { + return + } + if wranglerCfg.Vars == nil { + wranglerCfg.Vars = map[string]string{} + } + if project.Bindings.Vars == nil { + project.Bindings.Vars = map[string]string{} + } + for _, item := range vars { + key, value, ok := splitPair(item) + if !ok { + continue + } + wranglerCfg.Vars[key] = value + project.Bindings.Vars[key] = value + } +} + func canFallbackToPlainDeploy(options Options, err error) bool { if options.UploadOnly || options.Message == "" { return false diff --git a/internal/service/deploy/service_test.go b/internal/service/deploy/service_test.go index 7df8803..e88cda7 100644 --- a/internal/service/deploy/service_test.go +++ b/internal/service/deploy/service_test.go @@ -1,6 +1,10 @@ package deploy -import "testing" +import ( + "testing" + + "github.com/paolo/flare-edge-cli/internal/domain/config" +) func TestSplitPair(t *testing.T) { key, value, ok := splitPair("FOO=bar") @@ -8,3 +12,20 @@ func TestSplitPair(t *testing.T) { t.Fatalf("unexpected split result: %q %q %v", key, value, ok) } } + +func TestApplyVarsInitializesNilMaps(t *testing.T) { + project := config.Project{} + wranglerCfg := config.WranglerConfig{} + + applyVars(&project, &wranglerCfg, []string{"ORCHESTRATOR_URL=https://example.com", "BROKEN"}) + + if got := wranglerCfg.Vars["ORCHESTRATOR_URL"]; got != "https://example.com" { + t.Fatalf("unexpected wrangler var value: %q", got) + } + if got := project.Bindings.Vars["ORCHESTRATOR_URL"]; got != "https://example.com" { + t.Fatalf("unexpected project var value: %q", got) + } + if _, exists := wranglerCfg.Vars["BROKEN"]; exists { + t.Fatalf("invalid var entry should be ignored") + } +}