in cmd/debug.go [38:103]
func replFunc(tfDir, mptfDir *string) func(c *cobra.Command, args []string) error {
return func(c *cobra.Command, args []string) error {
varFlags, err := varFlags(os.Args)
if err != nil {
return err
}
localizedDir, dispose, err := localizeConfigFolder(*mptfDir, c.Context())
if err != nil {
return err
}
if dispose != nil {
defer dispose()
}
hclBlocks, err := pkg.LoadMPTFHclBlocks(false, localizedDir)
if err != nil {
return err
}
mod, err := pkg.NewTerraformModuleRef(*tfDir, "", "", "")
if err != nil {
return err
}
cfg, err := pkg.NewMetaProgrammingTFConfig(mod, nil, hclBlocks, varFlags, c.Context())
if err != nil {
return err
}
_, err = pkg.RunMetaProgrammingTFPlan(cfg)
if err != nil {
return err
}
line := liner.NewLiner()
defer func() {
_ = line.Close()
}()
line.SetCtrlCAborts(true)
fmt.Println("Entering debuging mode, press `quit` or `exit` or Ctrl+C to quit.")
for {
if input, err := line.Prompt("debug> "); err == nil {
if input == "quit" || input == "exit" {
return nil
}
line.AppendHistory(input)
expression, diag := hclsyntax.ParseExpression([]byte(input), "repl.hcl", hcl.InitialPos)
if diag.HasErrors() {
fmt.Printf("%s\n", diag.Error())
continue
}
value, diag := expression.Value(cfg.EvalContext())
if diag.HasErrors() {
fmt.Printf("%s\n", diag.Error())
continue
}
fmt.Println(golden.CtyValueToString(value))
} else if errors.Is(err, liner.ErrPromptAborted) {
fmt.Println("Aborted")
break
} else {
fmt.Println("Error reading line: ", err)
break
}
}
return nil
}
}