initial commit

This commit is contained in:
2026-07-28 01:30:29 -04:00
commit 74fd6dcbee
7 changed files with 2801 additions and 0 deletions
+61
View File
@@ -0,0 +1,61 @@
package main
import (
"bufio"
"encoding/csv"
"encoding/json"
"flag"
"log/slog"
"os"
"slices"
)
func main() {
var outf string
flag.StringVar(&outf, "o", "idle_single_mode.csv", "output CSV `file`")
flag.Parse()
out, err := os.Create(outf)
if err != nil {
slog.Error("create output", slog.Any("err", err))
os.Exit(1)
}
b := bufio.NewWriter(out)
defer b.Flush()
w := csv.NewWriter(b)
defer w.Flush()
if err := w.Write(headers); err != nil {
slog.Error("write header", slog.Any("err", err))
}
files := flag.Args()
slices.Sort(files)
for _, in := range files {
dofile(w, in)
}
}
func dofile(w *csv.Writer, name string) {
log := slog.With(slog.String("file", name))
log.Info("process")
f, err := os.Open(name)
if err != nil {
log.Error("open", slog.Any("err", err))
return
}
defer f.Close()
var ism WorkIdleSingleMode
d := json.NewDecoder(f)
d.DisallowUnknownFields()
if err := d.Decode(&ism); err != nil {
log.Error("decode", slog.Any("err", err))
return
}
for row := range ismRows(name, ism.ProgressLog) {
if err := w.Write(row.csv()); err != nil {
log.Error("write row", slog.Any("err", err))
}
}
}