// Copyright 2026 Leo Cheng
// SPDX-License-Identifier: Apache-2.0

///|
/// An HCL body, evaluated against a context the caller fills.
///
///     moon run src/examples/terraform
#coverage.skip
fn main raise {
  let variables = @moonconf.Node::map(
    [("region", @moonconf.Node::str("eu-west-1", "vars"))],
    "vars",
  )
  let context = @hcl.standard().bind("var", variables)
  let text = "region = var.region\n" +
    "name   = upper(\"web\")\n" +
    "ports  = [80, 443]\n" +
    "server \"web\" {\n" +
    "  port = 80 + 1\n" +
    "}\n"
  let body = @hcl.parse(text[:], context~)
  println("region -> \{body.get("region").unwrap().text()}")
  println("name   -> \{body.get("name").unwrap().text()}")
  let server = body.blocks_of("server")[0]
  println("port   -> \{server.body.get("port").unwrap().int()}")
}