feat: 完整游戏运维功能
This commit is contained in:
+26
-14
@@ -12,13 +12,17 @@ const defaultDataDir = ".platform-data"
|
||||
const defaultStorageBackend = "file"
|
||||
|
||||
type Config struct {
|
||||
Addr string
|
||||
StorageBackend string
|
||||
MySQLDSN string
|
||||
DataDir string
|
||||
MetadataPath string
|
||||
LogDir string
|
||||
LogBodyBackend string
|
||||
Addr string
|
||||
StorageBackend string
|
||||
MySQLDSN string
|
||||
DataDir string
|
||||
MetadataPath string
|
||||
LogDir string
|
||||
ArtifactDir string
|
||||
LogBodyBackend string
|
||||
BootstrapAdminEmail string
|
||||
BootstrapAdminPassword string
|
||||
SecretEnvelopeKey string
|
||||
}
|
||||
|
||||
func Load() Config {
|
||||
@@ -40,6 +44,10 @@ func Load() Config {
|
||||
if logDir == "" {
|
||||
logDir = filepath.Join(dataDir, "logs")
|
||||
}
|
||||
artifactDir := strings.TrimSpace(os.Getenv("PLATFORM_ARTIFACT_DIR"))
|
||||
if artifactDir == "" {
|
||||
artifactDir = filepath.Join(dataDir, "artifacts")
|
||||
}
|
||||
storageBackend := strings.TrimSpace(os.Getenv("PLATFORM_STORAGE_BACKEND"))
|
||||
if storageBackend == "" {
|
||||
storageBackend = defaultStorageBackend
|
||||
@@ -47,13 +55,17 @@ func Load() Config {
|
||||
logBodyBackend := strings.TrimSpace(os.Getenv("PLATFORM_LOG_BODY_BACKEND"))
|
||||
|
||||
return Config{
|
||||
Addr: addr,
|
||||
StorageBackend: storageBackend,
|
||||
MySQLDSN: strings.TrimSpace(os.Getenv("PLATFORM_MYSQL_DSN")),
|
||||
DataDir: dataDir,
|
||||
MetadataPath: metadataPath,
|
||||
LogDir: logDir,
|
||||
LogBodyBackend: logBodyBackend,
|
||||
Addr: addr,
|
||||
StorageBackend: storageBackend,
|
||||
MySQLDSN: strings.TrimSpace(os.Getenv("PLATFORM_MYSQL_DSN")),
|
||||
DataDir: dataDir,
|
||||
MetadataPath: metadataPath,
|
||||
LogDir: logDir,
|
||||
ArtifactDir: artifactDir,
|
||||
LogBodyBackend: logBodyBackend,
|
||||
BootstrapAdminEmail: strings.TrimSpace(os.Getenv("PLATFORM_BOOTSTRAP_ADMIN_EMAIL")),
|
||||
BootstrapAdminPassword: os.Getenv("PLATFORM_BOOTSTRAP_ADMIN_PASSWORD"),
|
||||
SecretEnvelopeKey: os.Getenv("PLATFORM_SECRET_ENVELOPE_KEY"),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,9 @@ func TestLoadUsesDefaultAddress(t *testing.T) {
|
||||
t.Setenv("PLATFORM_METADATA_PATH", "")
|
||||
t.Setenv("PLATFORM_LOG_DIR", "")
|
||||
t.Setenv("PLATFORM_LOG_BODY_BACKEND", "")
|
||||
t.Setenv("PLATFORM_BOOTSTRAP_ADMIN_EMAIL", "")
|
||||
t.Setenv("PLATFORM_BOOTSTRAP_ADMIN_PASSWORD", "")
|
||||
t.Setenv("PLATFORM_SECRET_ENVELOPE_KEY", "")
|
||||
|
||||
cfg := Load()
|
||||
if cfg.Addr != defaultAddr {
|
||||
@@ -36,12 +39,15 @@ func TestLoadUsesConfiguredAddress(t *testing.T) {
|
||||
t.Setenv("PLATFORM_METADATA_PATH", "/tmp/platform-metadata.json")
|
||||
t.Setenv("PLATFORM_LOG_DIR", "/tmp/platform-logs")
|
||||
t.Setenv("PLATFORM_LOG_BODY_BACKEND", "file")
|
||||
t.Setenv("PLATFORM_BOOTSTRAP_ADMIN_EMAIL", "admin@example.test")
|
||||
t.Setenv("PLATFORM_BOOTSTRAP_ADMIN_PASSWORD", "configured-secret")
|
||||
t.Setenv("PLATFORM_SECRET_ENVELOPE_KEY", "configured-envelope-key-at-least-32-bytes")
|
||||
|
||||
cfg := Load()
|
||||
if cfg.Addr != ":18080" {
|
||||
t.Fatalf("expected configured addr, got %q", cfg.Addr)
|
||||
}
|
||||
if cfg.StorageBackend != "mysql" || cfg.MySQLDSN != "platform:platform@tcp(127.0.0.1:3306)/platform?parseTime=true" || cfg.DataDir != "/tmp/platform-data" || cfg.MetadataPath != "/tmp/platform-metadata.json" || cfg.LogDir != "/tmp/platform-logs" || cfg.LogBodyBackend != "file" {
|
||||
if cfg.StorageBackend != "mysql" || cfg.MySQLDSN != "platform:platform@tcp(127.0.0.1:3306)/platform?parseTime=true" || cfg.DataDir != "/tmp/platform-data" || cfg.MetadataPath != "/tmp/platform-metadata.json" || cfg.LogDir != "/tmp/platform-logs" || cfg.LogBodyBackend != "file" || cfg.BootstrapAdminEmail != "admin@example.test" || cfg.BootstrapAdminPassword != "configured-secret" || cfg.SecretEnvelopeKey != "configured-envelope-key-at-least-32-bytes" {
|
||||
t.Fatalf("unexpected configured storage: %+v", cfg)
|
||||
}
|
||||
}
|
||||
@@ -97,6 +103,9 @@ func clearPlatformEnv(t *testing.T) {
|
||||
"PLATFORM_METADATA_PATH",
|
||||
"PLATFORM_LOG_DIR",
|
||||
"PLATFORM_LOG_BODY_BACKEND",
|
||||
"PLATFORM_BOOTSTRAP_ADMIN_EMAIL",
|
||||
"PLATFORM_BOOTSTRAP_ADMIN_PASSWORD",
|
||||
"PLATFORM_SECRET_ENVELOPE_KEY",
|
||||
} {
|
||||
t.Setenv(key, "")
|
||||
if err := os.Unsetenv(key); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user