in tpgtools/sample.go [174:220]
func BuildDependency(fileName string, product SnakeCaseProductName, localname, version string, hasGAEquivalent, makeLongForm bool, b []byte) (*Dependency, error) {
// Miscellaneous name rather than "resource name" because this is the name in the sample json file - which might not match the TF name!
// we have to account for that.
var resourceName miscellaneousNameSnakeCase
var packageName DCLPackageName
fileParts := strings.Split(fileName, ".")
if len(fileParts) == 4 {
p, rn := fileParts[1], fileParts[2]
packageName = DCLPackageName(p)
resourceName = miscellaneousNameSnakeCase(rn)
} else if len(fileParts) == 3 {
resourceName = miscellaneousNameSnakeCase(fileParts[1])
var err error
packageName, err = findDCLReferencePackage(product)
if err != nil {
return nil, err
}
} else {
return nil, fmt.Errorf("Invalid sample dependency file name: %s", fileName)
}
if localname == "" {
localname = fileParts[0]
}
terraformResourceType, err := DCLToTerraformReference(packageName, resourceName, version)
if err != nil {
return nil, fmt.Errorf("Error generating sample dependency reference %s: %s", fileName, err)
}
block, err := ConvertSampleJSONToHCL(packageName, resourceName, version, hasGAEquivalent, makeLongForm, b)
if err != nil {
glog.Errorf("failed to convert %q", fileName)
return nil, fmt.Errorf("Error generating sample dependency %s: %s", fileName, err)
}
// Find all instances of `resource "foo" "bar"` and replace `bar` with localname.
re := regexp.MustCompile(`(resource "` + terraformResourceType + `" ")(\w*)`)
block = re.ReplaceAllString(block, "${1}"+localname)
d := &Dependency{
FileName: fileName,
HCLLocalName: localname,
TerraformResourceType: terraformResourceType,
HCLBlock: block,
}
return d, nil
}