z_mirror/fmm

git clone https://git.raiguard.me/z_mirror/fmm

Caleb HeuerMove log file parsing into the library27d8943

trunk
926 B44 linesraw
1package fmm
2
3import (
4	"bufio"
5	"fmt"
6	"os"
7	"strings"
8)
9
10// Returns a slice of mod names extracted from a list of mod checksums in the
11// given log file.
12func ParseLogFile(filepath string) []ModIdent {
13	var output []ModIdent
14	file, err := os.Open(filepath)
15	if err != nil {
16		fmt.Fprintf(os.Stderr, "Error reading %s: %s", filepath, err)
17		return output
18	}
19	defer file.Close()
20
21	fileScanner := bufio.NewScanner(file)
22	fileScanner.Split(bufio.ScanLines)
23
24	inChecksums := false
25	for fileScanner.Scan() {
26		line := fileScanner.Text()
27		if !strings.Contains(line, "Checksum of") {
28			if inChecksums {
29				break
30			} else {
31				continue
32			}
33		}
34		inChecksums = true
35		parts := strings.Split(strings.TrimSpace(line), " ")
36		modName, _ := strings.CutSuffix(strings.Join(parts[3:len(parts)-1], " "), ":")
37		if modName == "base" {
38			continue
39		}
40		output = append(output, ModIdent{Name: modName, Version: nil})
41	}
42
43	return output
44}