package gen import ( "fmt" "io" "strings" "github.com/pulumi/pulumi/sdk/v3/go/common/util/contract" ) type promptToInputArrayHelper struct { destType string } var primitives = map[string]string{ "String": "string", "Bool": "bool", "Int": "int", "Int64": "int64", "Float64": "float64", } func (p *promptToInputArrayHelper) generateHelperMethod(w io.Writer) { promptType := p.getPromptItemType() inputType := p.getInputItemType() fnName := p.getFnName() fmt.Fprintf(w, "func %s(arr []%s) %s {\n", fnName, promptType, p.destType) fmt.Fprintf(w, "var pulumiArr %s\n", p.destType) fmt.Fprintf(w, "for _, v := range arr {\n") fmt.Fprintf(w, "pulumiArr = append(pulumiArr, %s(v))\n", inputType) fmt.Fprintf(w, "}\n") fmt.Fprintf(w, "return pulumiArr\n") fmt.Fprintf(w, "}\n") } func (p *promptToInputArrayHelper) getFnName() string { parts := strings.Split(p.destType, ".") contract.Assertf(len(parts) == 2, "promptToInputArrayHelper destType expected to have two parts.") return fmt.Sprintf("to%s%s", Title(parts[0]), Title(parts[1])) } func (p *promptToInputArrayHelper) getPromptItemType() string { inputType := p.getInputItemType() parts := strings.Split(inputType, ".") contract.Assertf(len(parts) == 2, "promptToInputArrayHelper destType expected to have two parts.") typ := parts[1] if t, ok := primitives[typ]; ok { return t } return typ } func (p *promptToInputArrayHelper) getInputItemType() string { return strings.TrimSuffix(p.destType, "Array") }