summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--argv.go1
-rw-r--r--doStats.go49
-rw-r--r--main.go5
3 files changed, 55 insertions, 0 deletions
diff --git a/argv.go b/argv.go
index ff5c70f..21c6210 100644
--- a/argv.go
+++ b/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"`
diff --git a/doStats.go b/doStats.go
new file mode 100644
index 0000000..19ca180
--- /dev/null
+++ b/doStats.go
@@ -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())
+}
diff --git a/main.go b/main.go
index cada3c2..c0dbf79 100644
--- a/main.go
+++ b/main.go
@@ -53,6 +53,11 @@ func main() {
me.chats.ConfigSave()
}
+ if argv.Stats != nil {
+ doStats()
+ okExit("")
+ }
+
if argv.Output != "" {
doOutput(argv.Output)
okExit("")