func readMappingsForDir()

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
}