From fb6a79ab6f7d6d05a971f96ee94c9f1154db688d Mon Sep 17 00:00:00 2001 From: Paul Dee Date: Wed, 15 Mar 2023 22:04:21 +0100 Subject: [PATCH] Fix obscure 'go generate' crash. (#2173) --- build/generate/functionTypes.go | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/build/generate/functionTypes.go b/build/generate/functionTypes.go index 29e8f40b3..e5b75ad9d 100644 --- a/build/generate/functionTypes.go +++ b/build/generate/functionTypes.go @@ -34,15 +34,19 @@ var delimiterRegex = regexp.MustCompile(`(?m)^---\n`) func parseFrontMatter(content string) (map[string]interface{}, string, error) { delimiterIndices := delimiterRegex.FindAllStringIndex(content, 2) - startIndex := delimiterIndices[0][0] - endIndex := delimiterIndices[1][0] - yamlString := content[startIndex+4 : endIndex] - var frontMatter map[string]interface{} - err := yaml.Unmarshal([]byte(yamlString), &frontMatter) - if err != nil { - return nil, "", err + if len(delimiterIndices) > 0 { + startIndex := delimiterIndices[0][0] + endIndex := delimiterIndices[1][0] + yamlString := content[startIndex+4 : endIndex] + var frontMatter map[string]interface{} + err := yaml.Unmarshal([]byte(yamlString), &frontMatter) + if err != nil { + return nil, "", err + } + return frontMatter, content[endIndex+4:], nil + } else { + return nil, "", fmt.Errorf("Failed to parse file. Remove it and try again.") } - return frontMatter, content[endIndex+4:], nil } var returnTypes = map[string]string{ @@ -81,8 +85,8 @@ func generateFunctionTypes() (string, error) { } frontMatter, body, err := parseFrontMatter(string(content)) if err != nil { - println("Error parsing front matter in", fPath) - return "", err + println("Error parsing front matter in", fPath, "error: ", err.Error()) + continue } if frontMatter["ts_ignore"] == true { continue