MCPcopy Create free account
hub / github.com/alibaba/open-code-review / LoadFromJSON

Function LoadFromJSON

internal/telemetry/config.go:71–106  ·  view source on GitHub ↗

LoadFromJSON merges telemetry settings from a JSON config file if present. This has lower priority than environment variables.

(cfg *Config, configPath string)

Source from the content-addressed store, hash-verified

69// LoadFromJSON merges telemetry settings from a JSON config file if present.
70// This has lower priority than environment variables.
71func LoadFromJSON(cfg *Config, configPath string) error {
72 data, err := os.ReadFile(configPath)
73 if err != nil {
74 if os.IsNotExist(err) {
75 return nil
76 }
77 return err
78 }
79
80 var root struct {
81 Telemetry *telemetrySection `json:"telemetry"`
82 }
83 if err := json.Unmarshal(data, &root); err != nil {
84 return nil // malformed JSON — skip silently
85 }
86 if root.Telemetry == nil {
87 return nil
88 }
89 t := root.Telemetry
90 if t.Enabled != nil {
91 cfg.Enabled = *t.Enabled
92 }
93 if t.Exporter != nil && cfg.Exporter == defaultExporter {
94 cfg.Exporter = *t.Exporter
95 }
96 if t.OTLPEndpoint != nil && cfg.OTLPEndpoint == "" {
97 cfg.OTLPEndpoint = *t.OTLPEndpoint
98 if cfg.Exporter == defaultExporter {
99 cfg.Exporter = "otlp"
100 }
101 }
102 if t.ContentLog != nil {
103 cfg.ContentLog = *t.ContentLog
104 }
105 return nil
106}
107
108// ResolveConfig builds the final Config by merging defaults, JSON config, and env vars.
109// Precedence: defaults < config.json < environment variables.

Callers 2

TestLoadFromJSONFunction · 0.85
ResolveConfigFunction · 0.85

Calls

no outgoing calls

Tested by 1

TestLoadFromJSONFunction · 0.68