on main help sign in
fix: ensure all providers are shown unless `disable_default_providers` is set (#2197)
0b618f4Andrey Nering
internal/config/provider.go+5−1
@@ -145,11 +145,15 @@ func Providers(cfg *Config) ([]catwalk.Provider, error) {
145 var errs []error
145 var errs []error
146 providers := csync.NewSlice[catwalk.Provider]()
146 providers := csync.NewSlice[catwalk.Provider]()
147 autoupdate := !cfg.Options.DisableProviderAutoUpdate
147 autoupdate := !cfg.Options.DisableProviderAutoUpdate
148+ customProvidersOnly := cfg.Options.DisableDefaultProviders
148
149
149 ctx, cancel := context.WithTimeout(context.Background(), 45*time.Second)
150 ctx, cancel := context.WithTimeout(context.Background(), 45*time.Second)
150 defer cancel()
151 defer cancel()
151
152
152 wg.Go(func() {
153 wg.Go(func() {
154+ if customProvidersOnly {
155+ return
156+ }
153 catwalkURL := cmp.Or(os.Getenv("CATWALK_URL"), defaultCatwalkURL)
157 catwalkURL := cmp.Or(os.Getenv("CATWALK_URL"), defaultCatwalkURL)
154 client := catwalk.NewWithURL(catwalkURL)
158 client := catwalk.NewWithURL(catwalkURL)
155 path := cachePathFor("providers")
159 path := cachePathFor("providers")
@@ -165,7 +169,7 @@ func Providers(cfg *Config) ([]catwalk.Provider, error) {
165 })
169 })
166
170
167 wg.Go(func() {
171 wg.Go(func() {
168− if !hyper.Enabled() {
172+ if customProvidersOnly || !hyper.Enabled() {
169 return
173 return
170 }
174 }
171 path := cachePathFor("hyper")
175 path := cachePathFor("hyper")
internal/ui/dialog/models.go+6−9
@@ -14,7 +14,6 @@ import (
14 "github.com/charmbracelet/crush/internal/ui/common"
14 "github.com/charmbracelet/crush/internal/ui/common"
15 "github.com/charmbracelet/crush/internal/ui/util"
15 "github.com/charmbracelet/crush/internal/ui/util"
16 uv "github.com/charmbracelet/ultraviolet"
16 uv "github.com/charmbracelet/ultraviolet"
17− xslice "github.com/charmbracelet/x/exp/slice"
18)
17)
19
18
20// ModelType represents the type of model to select.
19// ModelType represents the type of model to select.
@@ -143,14 +142,12 @@ func NewModels(com *common.Common, isOnboarding bool) (*Models, error) {
143 )
142 )
144 m.keyMap.Close = CloseKey
143 m.keyMap.Close = CloseKey
145
144
146− m.providers = slices.Collect(
145+ var err error
147− xslice.Map(
146+ m.providers, err = config.Providers(m.com.Config())
148− com.Config().Providers.Seq(),
147+ if err != nil {
149− func(pc config.ProviderConfig) catwalk.Provider {
148+ return nil, fmt.Errorf("failed to get providers: %w", err)
150− return pc.ToProvider()
151− },
149+ }
152− ),
150+
153− )
154 if err := m.setProviderItems(); err != nil {
151 if err := m.setProviderItems(); err != nil {
155 return nil, fmt.Errorf("failed to set provider items: %w", err)
152 return nil, fmt.Errorf("failed to set provider items: %w", err)
156 }
153 }