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

Function applyCustomProviderConfig

cmd/opencodereview/provider_cmd.go:155–228  ·  view source on GitHub ↗
(configPath string, cfg *Config, result providerTUIResult)

Source from the content-addressed store, hash-verified

153}
154
155func applyCustomProviderConfig(configPath string, cfg *Config, result providerTUIResult) error {
156 if result.provider == "" {
157 return fmt.Errorf("provider name is required")
158 }
159 model := result.resolvedModel()
160 if model == "" {
161 return fmt.Errorf("model is required")
162 }
163
164 if cfg.CustomProviders == nil {
165 cfg.CustomProviders = make(map[string]ProviderEntry)
166 }
167
168 entry := cfg.CustomProviders[result.provider]
169 entry.Model = model
170 if len(result.models) > 0 {
171 entry.Models = append([]string(nil), result.models...)
172 }
173 entry.Models = ensureModelInList(entry.Models, model)
174 if result.url != "" {
175 entry.URL = result.url
176 }
177 if result.protocol != "" {
178 entry.Protocol = result.protocol
179 }
180 if result.authHeader != "" {
181 authHeader, err := llm.NormalizeAuthHeader(result.authHeader)
182 if err != nil {
183 return fmt.Errorf("invalid auth_header: %w", err)
184 }
185 entry.AuthHeader = authHeader
186 }
187 if result.apiKey != "" {
188 entry.APIKey = result.apiKey
189 } else {
190 entry.APIKey = ""
191 }
192 cfg.CustomProviders[result.provider] = entry
193
194 if !result.isEdit {
195 cfg.Provider = result.provider
196 cfg.Model = model
197 } else if cfg.Provider == result.provider {
198 cfg.Model = model
199 }
200
201 if err := saveConfig(configPath, cfg); err != nil {
202 return err
203 }
204
205 if result.isEdit {
206 if cfg.Provider == result.provider {
207 fmt.Printf("\nActive provider %q updated.\n", result.provider)
208 } else {
209 fmt.Printf("\nCustom provider %q updated (not currently active).\n", result.provider)
210 }
211 fmt.Printf("Model: %s\n", model)
212 fmt.Println("\nTip: run 'ocr config model' to switch model later.")

Calls 5

NormalizeAuthHeaderFunction · 0.92
ensureModelInListFunction · 0.85
saveConfigFunction · 0.85
runLLMTestFunction · 0.85
resolvedModelMethod · 0.80