func ImportConfig()

in cmd/migrate_command.go [194:249]


func ImportConfig(resources []types.AzureResource, terraformBlock *hclwrite.Block) string {
	config := `terraform {
  required_providers {
    azapi = {
      source = "Azure/azapi"
    }
  }
}`
	if terraformBlock != nil {
		newFile := hclwrite.NewEmptyFile()
		newFile.Body().AppendBlock(terraformBlock)
		config = string(hclwrite.Format(newFile.Bytes()))
	}

	for _, r := range resources {
		config += r.EmptyImportConfig()
	}
	subscriptionId := ""
	for _, r := range resources {
		switch resource := r.(type) {
		case *types.AzapiResource:
			for _, instance := range resource.Instances {
				if strings.HasPrefix(instance.ResourceId, "/subscriptions/") {
					subscriptionId = strings.Split(instance.ResourceId, "/")[2]
					break
				}
			}
		case *types.AzapiUpdateResource:
			if strings.HasPrefix(resource.Id, "/subscriptions/") {
				subscriptionId = strings.Split(resource.Id, "/")[2]
			}
		case *types.AzurermResource:
			for _, instance := range resource.Instances {
				if strings.HasPrefix(instance.ResourceId, "/subscriptions/") {
					subscriptionId = strings.Split(instance.ResourceId, "/")[2]
					break
				}
			}
		}
		if subscriptionId != "" {
			break
		}
	}

	const providerConfig = `
provider "azurerm" {
  features {}
  subscription_id = "%s"
}

provider "azapi" {
}
`

	return fmt.Sprintf(providerConfig, subscriptionId) + config
}