github.com/myhau/pulumi/pkg/v3@v3.70.2-0.20221116134521-f2775972e587/codegen/go/gen_crd2pulumi.go (about) 1 package gen 2 3 import ( 4 "bytes" 5 "fmt" 6 7 "github.com/pulumi/pulumi/pkg/v3/codegen/schema" 8 ) 9 10 // CRDTypes returns a map from each module name to a buffer containing the 11 // code for its generated types. 12 func CRDTypes(tool string, pkg *schema.Package) (map[string]*bytes.Buffer, error) { 13 if err := pkg.ImportLanguages(map[string]schema.Language{"go": Importer}); err != nil { 14 return map[string]*bytes.Buffer{}, err 15 } 16 17 var goPkgInfo GoPackageInfo 18 if goInfo, ok := pkg.Language["go"].(GoPackageInfo); ok { 19 goPkgInfo = goInfo 20 } 21 packages := generatePackageContextMap(tool, pkg, goPkgInfo, nil) 22 23 var pkgMods []string 24 for mod := range packages { 25 pkgMods = append(pkgMods, mod) 26 } 27 28 buffers := map[string]*bytes.Buffer{} 29 30 for _, mod := range pkgMods { 31 pkg := packages[mod] 32 buffer := &bytes.Buffer{} 33 34 for _, r := range pkg.resources { 35 importsAndAliases := map[string]string{} 36 pkg.getImports(r, importsAndAliases) 37 pkg.genHeader(buffer, []string{"context", "reflect"}, importsAndAliases) 38 39 if err := pkg.genResource(buffer, r, goPkgInfo.GenerateResourceContainerTypes); err != nil { 40 return nil, fmt.Errorf("generating resource %s: %w", mod, err) 41 } 42 } 43 44 if len(pkg.types) > 0 { 45 for _, t := range pkg.types { 46 if err := pkg.genType(buffer, t); err != nil { 47 return nil, err 48 } 49 } 50 pkg.genTypeRegistrations(buffer, pkg.types) 51 } 52 53 buffers[mod] = buffer 54 } 55 56 return buffers, nil 57 }