in rules/terraform_locals_order.go [88:108]
func (r *TerraformLocalsOrderRule) suggestedOrder(runner tflint.Runner, block *hclsyntax.Block, attributes []*hclsyntax.Attribute) error {
sort.Slice(attributes, func(x, y int) bool {
return attributes[x].Name < attributes[y].Name
})
file, err := runner.GetFile(block.Range().Filename)
if err != nil {
return err
}
var localsHclTxts []string
for _, a := range attributes {
localsHclTxts = append(localsHclTxts, string(a.SrcRange.SliceBytes(file.Bytes)))
}
localsHclTxt := strings.Join(localsHclTxts, "\n")
localsHclTxt = fmt.Sprintf("%s {\n%s\n}", block.Type, localsHclTxt)
formattedTxt := string(hclwrite.Format([]byte(localsHclTxt)))
return runner.EmitIssue(
r,
fmt.Sprintf("Recommended locals order:\n%s", formattedTxt),
block.DefRange(),
)
}