kubeform.dev/terraform-backend-sdk@v0.0.0-20220310143633-45f07fe731c5/providers/addressed_types.go (about) 1 package providers 2 3 import ( 4 "sort" 5 6 "kubeform.dev/terraform-backend-sdk/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 }