diff --git a/providers/providers.go b/providers/providers.go index 7728a54..3faa9bd 100644 --- a/providers/providers.go +++ b/providers/providers.go @@ -85,14 +85,7 @@ func Search(binary string, p string, t string, q string, userProvider bool, verb return err } - for _, providerName := range ProviderNames(false) { - provider := Providers[providerName] - for _, providerTag := range provider.Tags() { - if providerTag == tag { - builders = append(builders, provider) - } - } - } + builders = append(builders, GetProvidersByTag(tag)...) } var success bool @@ -121,6 +114,22 @@ func Search(binary string, p string, t string, q string, userProvider bool, verb return nil } +// GetProvidersByTag gets all providers with a specific tag. +func GetProvidersByTag(tag string) []Provider { + provs := []Provider{} + + for _, providerName := range ProviderNames(false) { + provider := Providers[providerName] + for _, providerTag := range provider.Tags() { + if providerTag == tag { + provs = append(provs, provider) + } + } + } + + return provs +} + // DisplayProviders displays all the loaded providers. func DisplayProviders(verbose bool) string { names := ProviderNames(verbose) diff --git a/server/search.go b/server/search.go index 63e01ab..84c34a6 100644 --- a/server/search.go +++ b/server/search.go @@ -42,14 +42,7 @@ func search(defaultProvider string, verbose bool, w http.ResponseWriter, r *http } if requestedTag != "" { - for _, pName := range providers.ProviderNames(false) { - p := providers.Providers[pName] - for _, providerTag := range p.Tags() { - if providerTag == requestedTag { - builders = append(builders, p) - } - } - } + builders = append(builders, providers.GetProvidersByTag(requestedTag)...) } if len(builders) == 0 {