pkg/cai2hcl/convert.go (29 lines of code) (raw):
package cai2hcl
import (
"fmt"
"github.com/GoogleCloudPlatform/terraform-google-conversion/v6/pkg/cai2hcl/converters"
"github.com/GoogleCloudPlatform/terraform-google-conversion/v6/pkg/cai2hcl/models"
"github.com/GoogleCloudPlatform/terraform-google-conversion/v6/pkg/caiasset"
"go.uber.org/zap"
)
// Struct for options so that adding new options does not
// require updating function signatures all along the pipe.
type Options struct {
ErrorLogger *zap.Logger
}
// Converts CAI Assets into HCL string.
func Convert(assets []caiasset.Asset, options *Options) ([]byte, error) {
if options == nil || options.ErrorLogger == nil {
return nil, fmt.Errorf("logger is not initialized")
}
// TODO: add resolvers to resolve the assets into single resource assets
allBlocks := []*models.TerraformResourceBlock{}
for _, asset := range assets {
newBlocks, err := converters.ConvertResource(asset)
if err != nil {
return nil, err
}
if newBlocks != nil {
allBlocks = append(allBlocks, newBlocks...)
}
}
t, err := models.HclWriteBlocks(allBlocks)
options.ErrorLogger.Debug(string(t))
return t, err
}