package providers import ( "sort" "github.com/hashicorp/terraform/internal/addrs" ) // AddressedTypesAbs is a helper that extracts all of the distinct provider // types from the given list of absolute provider configuration addresses. func AddressedTypesAbs(providerAddrs []addrs.AbsProviderConfig) []addrs.Provider { if len(providerAddrs) == 0 { return nil } m := map[string]addrs.Provider{} for _, addr := range providerAddrs { m[addr.Provider.String()] = addr.Provider } names := make([]string, 0, len(m)) for typeName := range m { names = append(names, typeName) } sort.Strings(names) // Stable result for tests ret := make([]addrs.Provider, len(names)) for i, name := range names { ret[i] = m[name] } return ret }