in mmv1/provider/terraform.go [594:643]
func (t Terraform) replaceImportPath(outputFolder, target string) {
targetFile := filepath.Join(outputFolder, target)
sourceByte, err := os.ReadFile(targetFile)
if err != nil {
log.Fatalf("Cannot read file %s to replace import path: %s", targetFile, err)
}
data := string(sourceByte)
gaImportPath := ImportPathFromVersion("ga")
betaImportPath := ImportPathFromVersion("beta")
if strings.Contains(data, betaImportPath) {
log.Fatalf("Importing a package from module %s is not allowed in file %s. Please import a package from module %s.", betaImportPath, filepath.Base(target), gaImportPath)
}
if t.TargetVersionName == "ga" {
return
}
// Replace the import pathes in utility files
var tpg, dir string
switch t.TargetVersionName {
case "beta":
tpg = TERRAFORM_PROVIDER_BETA
dir = RESOURCE_DIRECTORY_BETA
default:
tpg = TERRAFORM_PROVIDER_PRIVATE
dir = RESOURCE_DIRECTORY_PRIVATE
}
sourceByte = bytes.Replace(sourceByte, []byte(gaImportPath), []byte(tpg+"/"+dir), -1)
sourceByte = bytes.Replace(sourceByte, []byte(TERRAFORM_PROVIDER_GA+"/version"), []byte(tpg+"/version"), -1)
sourceByte = bytes.Replace(sourceByte, []byte("module "+TERRAFORM_PROVIDER_GA), []byte("module "+tpg), -1)
if filepath.Ext(targetFile) == (".go") {
formatByte, err := format.Source(sourceByte)
if err != nil {
log.Printf("error formatting %s: %s", targetFile, err)
} else {
sourceByte = formatByte
}
}
err = os.WriteFile(targetFile, sourceByte, 0644)
if err != nil {
log.Fatalf("Cannot write file %s to replace import path: %s", target, err)
}
}