Parse bake config as hcl falling back to json

Signed-off-by: Patrick Van Stee <patrick@vanstee.me>
pull/280/head
Patrick Van Stee 5 years ago
parent 44c840b31d
commit 355261e49e
No known key found for this signature in database
GPG Key ID: BF979CB547EC707B

@ -74,18 +74,20 @@ type staticConfig struct {
}
func ParseHCL(dt []byte, fn string) (*Config, error) {
var file *hcl.File
var diags hcl.Diagnostics
// Decode user defined functions.
fnl := strings.ToLower(fn)
if strings.HasSuffix(fnl, ".json") {
file, diags = json.Parse(dt, fn)
} else {
file, diags = hclsyntax.ParseConfig(dt, fn, hcl.Pos{Line: 1, Column: 1})
}
if diags.HasErrors() {
return nil, diags
// Decode user defined functions, first parsing as hcl and falling back to
// json, returning errors based on the file suffix.
file, hcldiags := hclsyntax.ParseConfig(dt, fn, hcl.Pos{Line: 1, Column: 1})
if hcldiags.HasErrors() {
var jsondiags hcl.Diagnostics
file, jsondiags = json.Parse(dt, fn)
if jsondiags.HasErrors() {
fnl := strings.ToLower(fn)
if strings.HasSuffix(fnl, ".json") {
return nil, jsondiags
} else {
return nil, hcldiags
}
}
}
userFunctions, _, diags := userfunc.DecodeUserFunctions(file.Body, "function", func() *hcl.EvalContext {

Loading…
Cancel
Save