add reattach to provider schema
diff --git a/tfexec/providers_schema.go b/tfexec/providers_schema.go
index 995dd15..858f8c1 100644
--- a/tfexec/providers_schema.go
+++ b/tfexec/providers_schema.go
@@ -10,9 +10,37 @@
tfjson "github.com/hashicorp/terraform-json"
)
+type providersSchemaConfig struct {
+ reattachInfo ReattachInfo
+}
+
+var defaultProvidersSchemaOptions = providersSchemaConfig{}
+
+type ProvidersSchemaOption interface {
+ configureProvidersSchema(*providersSchemaConfig)
+}
+
+func (opt *ReattachOption) configureProvidersSchema(conf *providersSchemaConfig) {
+ conf.reattachInfo = opt.info
+}
+
// ProvidersSchema represents the terraform providers schema -json subcommand.
-func (tf *Terraform) ProvidersSchema(ctx context.Context) (*tfjson.ProviderSchemas, error) {
- schemaCmd := tf.providersSchemaCmd(ctx)
+func (tf *Terraform) ProvidersSchema(ctx context.Context, opts ...ProvidersSchemaOption) (*tfjson.ProviderSchemas, error) {
+ c := defaultProvidersSchemaOptions
+ for _, o := range opts {
+ o.configureProvidersSchema(&c)
+ }
+
+ mergeEnv := map[string]string{}
+ if c.reattachInfo != nil {
+ reattachStr, err := c.reattachInfo.marshalString()
+ if err != nil {
+ return nil, err
+ }
+ mergeEnv[reattachEnvVar] = reattachStr
+ }
+
+ schemaCmd := tf.providersSchemaCmd(ctx, mergeEnv)
var ret tfjson.ProviderSchemas
err := tf.runTerraformCmdJSON(ctx, schemaCmd, &ret)
@@ -28,9 +56,9 @@
return &ret, nil
}
-func (tf *Terraform) providersSchemaCmd(ctx context.Context, args ...string) *exec.Cmd {
+func (tf *Terraform) providersSchemaCmd(ctx context.Context, mergeEnv map[string]string, args ...string) *exec.Cmd {
allArgs := []string{"providers", "schema", "-json", "-no-color"}
allArgs = append(allArgs, args...)
- return tf.buildTerraformCmd(ctx, nil, allArgs...)
+ return tf.buildTerraformCmd(ctx, mergeEnv, allArgs...)
}