in cmd/buildmetadata/main.go [391:438]
func readMappingsForDir(dir string) (map[int]string, error) {
lang := filepath.Base(dir)
mappings := make(map[int]string)
files, err := filepath.Glob(dir + "/*.txt")
if err != nil {
return nil, err
}
for _, file := range files {
body, err := os.ReadFile(file)
if err != nil {
return nil, err
}
for _, line := range strings.Split(string(body), "\n") {
if strings.HasPrefix(line, "#") {
continue
}
if strings.TrimSpace(line) == "" {
continue
}
fields := strings.Split(line, "|")
if len(fields) != 2 {
continue
}
prefix := fields[0]
prefixInt, err := strconv.Atoi(prefix)
if err != nil || prefixInt < 0 {
return nil, fmt.Errorf("error parsing line: %s", line)
}
value := strings.TrimSpace(fields[1])
if value == "" {
continue
}
_, repeat := mappings[prefixInt]
if repeat {
return nil, fmt.Errorf("found repeated prefix on line: %s", line)
}
mappings[prefixInt] = fields[1]
}
}
fmt.Printf(" > read %d mappings for %s\n", len(mappings), lang)
return mappings, nil
}