github.com/cycloidio/terraform@v1.1.10-0.20220513142504-76d5c768dc63/providers/addressed_types.go (about) 1 package providers 2 3 import ( 4 "sort" 5 6 "github.com/cycloidio/terraform/addrs" 7 ) 8 9 // AddressedTypesAbs is a helper that extracts all of the distinct provider 10 // types from the given list of absolute provider configuration addresses. 11 func AddressedTypesAbs(providerAddrs []addrs.AbsProviderConfig) []addrs.Provider { 12 if len(providerAddrs) == 0 { 13 return nil 14 } 15 m := map[string]addrs.Provider{} 16 for _, addr := range providerAddrs { 17 m[addr.Provider.String()] = addr.Provider 18 } 19 20 names := make([]string, 0, len(m)) 21 for typeName := range m { 22 names = append(names, typeName) 23 } 24 25 sort.Strings(names) // Stable result for tests 26 27 ret := make([]addrs.Provider, len(names)) 28 for i, name := range names { 29 ret[i] = m[name] 30 } 31 32 return ret 33 }