package dockerfile2llb import ( "bufio" "io" "regexp" "strings" ) const keySyntax = "syntax" var reDirective = regexp.MustCompile(`^#\s*([a-zA-Z][a-zA-Z0-9]*)\s*=\s*(.+?)\s*$`) func DetectSyntax(r io.Reader) (string, string, bool) { directives := ParseDirectives(r) if len(directives) == 0 { return "", "", false } v, ok := directives[keySyntax] if !ok { return "", "", false } p := strings.SplitN(v, " ", 2) return p[0], v, true } func ParseDirectives(r io.Reader) map[string]string { m := map[string]string{} s := bufio.NewScanner(r) for s.Scan() { match := reDirective.FindStringSubmatch(s.Text()) if len(match) == 0 { return m } m[strings.ToLower(match[1])] = match[2] } return m }