internal/langserver/handlers/validate/validate.go (26 lines of code) (raw):
package validate
import (
"github.com/Azure/azurerm-lsp/internal/langserver/diagnostics"
"github.com/hashicorp/hcl/v2"
"github.com/hashicorp/hcl/v2/hclsyntax"
)
func NewDiagnostics(src []byte, filename string) diagnostics.Diagnostics {
diags := diagnostics.NewDiagnostics()
_, schemaDiags := ValidateFile(src, filename)
diags.EmptyRootDiagnostic()
validateDiags := make(map[string]hcl.Diagnostics)
validateDiags[filename] = schemaDiags
diags.Append("schema validate", validateDiags)
return diags
}
func ValidateFile(src []byte, filename string) (*hcl.File, hcl.Diagnostics) {
file, _ := hclsyntax.ParseConfig(src, filename, hcl.InitialPos)
if file == nil {
return nil, nil
}
_, isHcl := file.Body.(*hclsyntax.Body)
if !isHcl {
return nil, nil
}
return file, nil
}