(state *globalState)
| 310 | } |
| 311 | |
| 312 | func (a *App) providerUpdateCommand(state *globalState) *cobra.Command { |
| 313 | flags := &addOrUpdateFlags{} |
| 314 | cmd := &cobra.Command{ |
| 315 | Use: "update NAME [flags]", |
| 316 | Short: "Update fields on an existing provider (interactive wizard when flags omitted)", |
| 317 | Args: cobra.ExactArgs(1), |
| 318 | RunE: func(cmd *cobra.Command, args []string) error { |
| 319 | name := args[0] |
| 320 | changedFlags := []string{"endpoint", "api-key", "api-key-env", "client", "model", "list-models-cmd", "description", "use-proxy", "no-use-proxy", "keep-proxy-config", "no-keep-proxy-config", "enabled", "disabled"} |
| 321 | for _, flagName := range changedFlags { |
| 322 | if cmd.Flags().Changed(flagName) { |
| 323 | return a.providerUpdateFlagMode(cmd, state, name, flags) |
| 324 | } |
| 325 | } |
| 326 | listed, err := providerAPI(state).List(context.Background()) |
| 327 | if err != nil { |
| 328 | return err |
| 329 | } |
| 330 | file := providersFileFromAPI(listed) |
| 331 | ep, ok := file.Endpoints[name] |
| 332 | if !ok { |
| 333 | return fmt.Errorf("provider %q not found (try 'cam provider list')", name) |
| 334 | } |
| 335 | name, newEp, cancelled, err := runProviderWizard(cmd.OutOrStdout(), cmd.InOrStdin(), wizardModeUpdate, &ep, name, file.SortedNames()) |
| 336 | if err != nil { |
| 337 | return err |
| 338 | } |
| 339 | if cancelled { |
| 340 | return nil |
| 341 | } |
| 342 | if _, err := providerAPI(state).Update(context.Background(), name, providerPatchFromEndpoint(newEp)); err != nil { |
| 343 | return err |
| 344 | } |
| 345 | fmt.Fprintf(cmd.OutOrStdout(), "Updated provider %q\n", name) |
| 346 | return nil |
| 347 | }, |
| 348 | } |
| 349 | bindAddOrUpdateFlags(cmd, flags) |
| 350 | return cmd |
| 351 | } |
| 352 | |
| 353 | func (a *App) providerUpdateFlagMode(cmd *cobra.Command, state *globalState, name string, flags *addOrUpdateFlags) error { |
| 354 | if flags.useProxy && flags.noUseProxy { |
no test coverage detected