databricks-cli/bundle/internal/tf/codegen/schema/schema.go

55 lines
931 B
Go
Raw Permalink Normal View History

package schema
import (
"context"
"errors"
"io/fs"
"os"
"path/filepath"
tfjson "github.com/hashicorp/terraform-json"
)
const DatabricksProvider = "registry.terraform.io/databricks/databricks"
type Schema struct {
WorkingDir string
ProviderSchemaFile string
}
func New() (*Schema, error) {
wd, err := os.Getwd()
if err != nil {
return nil, err
}
tmpdir := filepath.Join(wd, "./tmp")
err = os.MkdirAll(tmpdir, 0755)
if err != nil {
return nil, err
}
return &Schema{
WorkingDir: tmpdir,
ProviderSchemaFile: filepath.Join(tmpdir, "provider.json"),
}, nil
}
func Load(ctx context.Context) (*tfjson.ProviderSchema, error) {
s, err := New()
if err != nil {
return nil, err
}
// Generate schema file if it doesn't exist.
if _, err := os.Stat(s.ProviderSchemaFile); errors.Is(err, fs.ErrNotExist) {
err = s.Generate(ctx)
if err != nil {
return nil, err
}
}
return s.Load(ctx)
}