Ad-hoc HCL Code Generation 
INFO
This is an experimental feature. Please enable the "tmgen" experiment in your Terramate configuration by adding it to the terramate.config.experiments list.
Advanced documentation can be found here once the feature reaches stable status.
Please contact us on GitHub or in Discord if you like to know more or want to give early feedback.
Use any HCL file as a blueprint to generate code for a stack by adding .tmgen to the file type and running terramate generate against it. This means you do not need to place the to-be generated code in the generate_hcl block of a separate .tm.hcl file as done in the Code Generation.
You can use Terramate data such as globals , metadata or functions in a .tmgen file.
Important
To use globals in a .tmgen file , create a separate config.tm.hcl file to define them first.
VSCode Syntax Highlighting
To enable syntax highlighting in VSCode, you need to associate the .tmgen filetype in your settings:
{
  "files.associations": {
    "*.tf.tmgen": "tf",
    "*.json.tmgen": "json"
  }
}Example 
- Create a new repository:
 
git init tmgen-guide- Create a new file inside the repo called 
terramate.tm.hclwith the following content, enabling thetmgenfeature: 
terramate {
  config {
    # Enables the simplified adhoc HCL code generation
    # https://terramate.io/docs/cli/code-generation/tmgen
    experiments = [
      "tmgen"
    ]
  }
}- Create a new stack:
 
terramate create example-stack- Create a new file 
main.tf.tmgenwith the following content: 
module "vpc" {
  source  = "cloudposse/vpc/aws"
  version = tm_try(global.terraform.modules.vpc.version, "2.0.0")
  namespace = "eg"
  stage     = "test"
  name      = "app"
  ipv4_primary_cidr_block = "10.0.0.0/16"
  assign_generated_ipv6_cidr_block = true
}- Create a new file to define the global 
config.tm.hclwith the following content: 
globals "terraform" "modules" "vpc" {
  version = "2.2.0"
}- Run 
terramate generateto generate amain.tffile in theexample-stackusing themain.tf.tmgenfile as a blueprint. 
terramate generate