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...)
 }