feat(stats): add --stats flag to save session stats

This commit is contained in:
Castor Gemini 2025-08-24 09:01:34 -05:00 committed by Jeff Carr
parent cd170de677
commit 1a6b367144
3 changed files with 55 additions and 0 deletions

View File

@ -16,6 +16,7 @@ type args struct {
Output string `arg:"--output" help:"should get a string from regex-cli"`
Input string `arg:"--input" help:"should get a string from regex-cli"`
ImportFile string `arg:"--import" help:"import a file from regex-cli"`
Stats []string `arg:"--stats" help:"add stats to a chat"`
Force bool `arg:"--force" help:"try to strong arm things"`
Verbose bool `arg:"--verbose" help:"show more output"`
Bash bool `arg:"--bash" help:"generate bash completion"`

49
doStats.go Normal file
View File

@ -0,0 +1,49 @@
package main
import (
"encoding/json"
"fmt"
"go.wit.com/lib/protobuf/chatpb"
"go.wit.com/log"
"google.golang.org/protobuf/types/known/timestamppb"
)
func doStats() {
if len(argv.Stats) != 2 {
log.Error(fmt.Errorf("expected 2 arguments for --stats"))
return
}
sessionUuid := argv.Stats[0]
statsString := argv.Stats[1]
// Find the "auto" chat, or create it if it doesn't exist.
var autoChat *chatpb.Chat
for _, chat := range me.chats.GetChats() {
if chat.GetChatName() == "auto" {
autoChat = chat
break
}
}
if autoChat == nil {
autoChat = &chatpb.Chat{
ChatName: "auto",
Ctime: timestamppb.Now(),
}
me.chats.Chats = append(me.chats.Chats, autoChat)
}
var stats chatpb.SessionStats
err := json.Unmarshal([]byte(statsString), &stats)
if err != nil {
log.Error(fmt.Errorf("error unmarshalling stats: %w", err))
return
}
// The session UUID from the command line is the UUID of the session.
stats.Uuid = sessionUuid
autoChat.Session = append(autoChat.Session, &stats)
me.chats.ConfigSave()
log.Info("stats saved for session", sessionUuid, "in chat", autoChat.GetChatName())
}

View File

@ -53,6 +53,11 @@ func main() {
me.chats.ConfigSave()
}
if argv.Stats != nil {
doStats()
okExit("")
}
if argv.Output != "" {
doOutput(argv.Output)
okExit("")