# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: MPL-2.0

name: Feature Request
description: Suggest a new feature or other enhancement.
labels: ["enhancement", "new"]
body:
  - type: markdown
    attributes:
      value: |
        # Thank you for opening a feature request.

        The [hashicorp/terraform](https://github.com/hashicorp/terraform) issue tracker is reserved for feature requests relating to the core Terraform CLI application and configuration language.

        For general usage questions, please see: https://www.terraform.io/community.html.

        ## If your feature request relates to:
        * **Terraform Cloud/Enterprise**: please email tf-cloud@hashicorp.support or [open a new request](https://support.hashicorp.com/hc/en-us/requests/new).
        * **AWS Terraform Provider**: Open an issue at [hashicorp/terraform-provider-aws](https://github.com/hashicorp/terraform-provider-aws/issues/new/choose).
        * **Azure Terraform Provider**: Open an issue at [hashicorp/terraform-provider-azurerm](https://github.com/hashicorp/terraform-provider-azurerm/issues/new/choose).
        * **Other Terraform Providers**: Please open an issue in the provider's own repository, which can be found by searching the [Terraform Registry](https://registry.terraform.io/browse/providers).

  - type: textarea
    id: tf-version
    attributes:
      label: Terraform Version
      description: Run `terraform version` to show the version, and paste the result below. If you're not using the latest version, please check to see if something related to your request has already been implemented in a later version.
      render: shell
      placeholder: ...output of `terraform version`...
      value:
    validations:
      required: true

  - type: textarea
    id: tf-use-case
    attributes:
      label: Use Cases
      description: |
        In order to properly evaluate a feature request, it is necessary to understand the use cases for it.
        Please describe below the _end goal_ you are trying to achieve that has led you to request this feature.
        Please keep this section focused on the problem and not on the suggested solution. We'll get to that in a moment, below!
      placeholder:
      value:
    validations:
      required: true

  - type: textarea
    id: tf-attempted-solution
    attributes:
      label: Attempted Solutions
      description: |
          If you've already tried to solve the problem within Terraform's existing features and found a limitation that prevented you from succeeding, please describe it below in as much detail as possible.
          Ideally, this would include real configuration snippets that you tried, real Terraform command lines you ran, and what results you got in each case.
          Please remove any sensitive information such as passwords before sharing configuration snippets and command lines.
      placeholder:
      value:
    validations:
      required: true

  - type: textarea
    id: tf-proposal
    attributes:
      label: Proposal
      description: |
          If you have an idea for a way to address the problem via a change to Terraform features, please describe it below.
          In this section, it's helpful to include specific examples of how what you are suggesting might look in configuration files, or on the command line, since that allows us to understand the full picture of what you are proposing.
          If you're not sure of some details, don't worry! When we evaluate the feature request we may suggest modifications as necessary to work within the design constraints of Terraform Core.
      placeholder:
      value:
    validations:
      required: false

  - type: textarea
    id: tf-references
    attributes:
      label: References
      description: |
        Are there any other GitHub issues, whether open or closed, that are related to the problem you've described above or to the suggested solution? If so, please create a list below that mentions each of them. For example:
        ```
          - #6017
        ```
      placeholder:
      value:
    validations:
      required: false

  - type: markdown
    attributes:
      value: |
        **Note:** If the submit button is disabled and you have filled out all required fields, please check that you did not forget a **Title** for the issue.
