Centralize code-server request detection

This commit is contained in:
jester 2026-04-19 17:59:24 +00:00
parent 08aba389e4
commit c837ec8807
4 changed files with 61 additions and 26 deletions

View File

@ -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)

View File

@ -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
}

View File

@ -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)
}
})
}
}

View File

@ -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