package fmm import ( "bufio" "fmt" "os" "strings" ) // Returns a slice of mod names extracted from a list of mod checksums in the // given log file. func ParseLogFile(filepath string) []ModIdent { var output []ModIdent file, err := os.Open(filepath) if err != nil { fmt.Fprintf(os.Stderr, "Error reading %s: %s", filepath, err) return output } defer file.Close() fileScanner := bufio.NewScanner(file) fileScanner.Split(bufio.ScanLines) inChecksums := false for fileScanner.Scan() { line := fileScanner.Text() if !strings.Contains(line, "Checksum of") { if inChecksums { break } else { continue } } inChecksums = true parts := strings.Split(strings.TrimSpace(line), " ") modName, _ := strings.CutSuffix(strings.Join(parts[3:len(parts)-1], " "), ":") if modName == "base" { continue } output = append(output, ModIdent{Name: modName, Version: nil}) } return output }