feat(stats): add --stats flag to save session stats
This commit is contained in:
parent
cd170de677
commit
1a6b367144
1
argv.go
1
argv.go
|
@ -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"`
|
||||
|
|
|
@ -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())
|
||||
}
|
Loading…
Reference in New Issue