diff --git a/internal/http/agent.go b/internal/http/agent.go index 8b5b070..88d127d 100755 --- a/internal/http/agent.go +++ b/internal/http/agent.go @@ -293,7 +293,7 @@ func ensureProvisioned(cfg *state.Config) error { } func ensureDevCodeServer(cfg *state.Config) error { - if cfg == nil || !devCodeServerRequested(*cfg) { + if cfg == nil || !codeserver.Requested(*cfg) { return nil } @@ -316,18 +316,6 @@ func ensureDevCodeServer(cfg *state.Config) error { return nil } -func devCodeServerRequested(cfg state.Config) bool { - if cfg.EnableCodeServer { - return true - } - for _, addon := range cfg.Addons { - if strings.EqualFold(addon, "codeserver") { - return true - } - } - return false -} - /* -------------------------------------------------------------------------- /config — the REAL provisioning trigger (async) diff --git a/internal/provision/addons/codeserver/requested.go b/internal/provision/addons/codeserver/requested.go new file mode 100644 index 0000000..7172e22 --- /dev/null +++ b/internal/provision/addons/codeserver/requested.go @@ -0,0 +1,19 @@ +package codeserver + +import ( + "strings" + + "zlh-agent/internal/state" +) + +func Requested(cfg state.Config) bool { + if cfg.EnableCodeServer { + return true + } + for _, addon := range cfg.Addons { + if strings.EqualFold(addon, "codeserver") { + return true + } + } + return false +} diff --git a/internal/provision/addons/codeserver/requested_test.go b/internal/provision/addons/codeserver/requested_test.go new file mode 100644 index 0000000..fcff59f --- /dev/null +++ b/internal/provision/addons/codeserver/requested_test.go @@ -0,0 +1,39 @@ +package codeserver + +import ( + "testing" + + "zlh-agent/internal/state" +) + +func TestRequested(t *testing.T) { + tests := []struct { + name string + cfg state.Config + want bool + }{ + { + name: "enable flag", + cfg: state.Config{EnableCodeServer: true}, + want: true, + }, + { + name: "addon case insensitive", + cfg: state.Config{Addons: []string{"CodeServer"}}, + want: true, + }, + { + name: "not requested", + cfg: state.Config{Addons: []string{"other"}}, + want: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := Requested(tt.cfg); got != tt.want { + t.Fatalf("Requested() = %t, want %t", got, tt.want) + } + }) + } +} diff --git a/internal/provision/provision.go b/internal/provision/provision.go index c818f54..a40c4f6 100644 --- a/internal/provision/provision.go +++ b/internal/provision/provision.go @@ -6,6 +6,7 @@ import ( "strings" "zlh-agent/internal/provision/addons" + "zlh-agent/internal/provision/addons/codeserver" "zlh-agent/internal/provision/devcontainer" "zlh-agent/internal/provision/minecraft" "zlh-agent/internal/provision/steam" @@ -151,7 +152,7 @@ func ProvisionAll(cfg state.Config) error { /* --------------------------------------------------------- ADDONS (OPTIONAL, ROLE-AGNOSTIC) --------------------------------------------------------- */ - if strings.EqualFold(cfg.ContainerType, "dev") && codeServerRequested(cfg) { + if strings.EqualFold(cfg.ContainerType, "dev") && codeserver.Requested(cfg) { seen := false for _, addon := range cfg.Addons { if strings.EqualFold(addon, "codeserver") { @@ -173,18 +174,6 @@ func ProvisionAll(cfg state.Config) error { return nil } -func codeServerRequested(cfg state.Config) bool { - if cfg.EnableCodeServer { - return true - } - for _, addon := range cfg.Addons { - if strings.EqualFold(addon, "codeserver") { - return true - } - } - return false -} - func normalizeMinecraftConfig(cfg *state.Config) { if cfg == nil { return