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

Function LoadFromJSON

internal/telemetry/config.go:74–109  ·  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

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

Callers 2

TestLoadFromJSONFunction · 0.85
ResolveConfigFunction · 0.85

Calls

no outgoing calls

Tested by 1

TestLoadFromJSONFunction · 0.68