From 1d39190d70cddf7c4861da7bef673449439f6a9c Mon Sep 17 00:00:00 2001 From: Flechazo <2558755403@qq.com> Date: Sun, 4 Oct 2026 01:46:58 +0800 Subject: [PATCH] fix(server): load development settings by default --- go/cmd/bd2server/development_settings.go | 10 ++++++++++ go/cmd/bd2server/development_settings_test.go | 17 +++++++++++++++++ go/cmd/bd2server/main.go | 7 +++---- 3 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 go/cmd/bd2server/development_settings.go create mode 100644 go/cmd/bd2server/development_settings_test.go diff --git a/go/cmd/bd2server/development_settings.go b/go/cmd/bd2server/development_settings.go new file mode 100644 index 0000000..94850bd --- /dev/null +++ b/go/cmd/bd2server/development_settings.go @@ -0,0 +1,10 @@ +package main + +import "path/filepath" + +func resolveDevelopmentSettingsPath(dataDir, override string) string { + if override != "" { + return filepath.Clean(override) + } + return filepath.Join(dataDir, "dev-tools.json") +} diff --git a/go/cmd/bd2server/development_settings_test.go b/go/cmd/bd2server/development_settings_test.go new file mode 100644 index 0000000..0702431 --- /dev/null +++ b/go/cmd/bd2server/development_settings_test.go @@ -0,0 +1,17 @@ +package main + +import ( + "path/filepath" + "testing" +) + +func TestDevelopmentSettingsDefaultFollowsServerDataDirectory(t *testing.T) { + dataDir := filepath.Join(t.TempDir(), "custom-data") + if got := resolveDevelopmentSettingsPath(dataDir, ""); got != filepath.Join(dataDir, "dev-tools.json") { + t.Fatalf("development settings path = %q", got) + } + override := filepath.Join(t.TempDir(), "operator-settings.json") + if got := resolveDevelopmentSettingsPath(dataDir, override); got != override { + t.Fatalf("explicit development settings path = %q, want %q", got, override) + } +} diff --git a/go/cmd/bd2server/main.go b/go/cmd/bd2server/main.go index df233b6..fcf1724 100644 --- a/go/cmd/bd2server/main.go +++ b/go/cmd/bd2server/main.go @@ -95,7 +95,7 @@ func serve(args []string) (serveErr error) { deckSeed := fs.String("deck-seed", "", "versioned starter deck") worldSeed := fs.String("world-seed", "", "versioned starter world") gachaScheduleSeed := fs.String("gacha-schedule-seed", "", "versioned dynamic gacha schedule") - devToolsConfig := fs.String("dev-tools-config", "", "optional local development-tool settings JSON") + devToolsConfig := fs.String("dev-tools-config", "", "development-tool settings JSON (defaults to DATA_DIR/dev-tools.json)") if err := fs.Parse(args); err != nil { return err } @@ -166,6 +166,7 @@ func serve(args []string) (serveErr error) { if err != nil { return fmt.Errorf("resolve server data directory: %w", err) } + *devToolsConfig = resolveDevelopmentSettingsPath(*dataDir, *devToolsConfig) gameData := filepath.Join(*dataDir, "resources", "GameData") if *stateFile == "" { *stateFile = filepath.Join(*dataDir, "state", "state.db") @@ -360,9 +361,7 @@ func serve(args []string) (serveErr error) { if err != nil { return fmt.Errorf("load inventory slot state: %w", err) } - if *devToolsConfig != "" { - inventorySlots.AttachDevelopmentSettings(filepath.Clean(*devToolsConfig)) - } + inventorySlots.AttachDevelopmentSettings(*devToolsConfig) if err := login.AttachInventorySlots(inventorySlots); err != nil { return fmt.Errorf("attach inventory slots to login: %w", err) }