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

Loading…
Cancel
Save