// Copyright 2017-2025 WIT.COM Inc. All rights reserved. // Use of this source code is governed by the GPL 3.0 package main // An app to submit patches for the 30 GO GUI repos import ( "embed" "os" "github.com/google/uuid" "go.wit.com/dev/alexflint/arg" "go.wit.com/gui" "go.wit.com/lib/protobuf/chatpb" "go.wit.com/log" ) // sent via -ldflags var VERSION string var BUILDTIME string // this optionally can store the GUI plugins // //go:embed resources/* var resources embed.FS // used for shell auto completion var ARGNAME string = "gemini" // using this for now. triggers config save var configSave bool /* func getVersion(repo *gitpb.Repo, name string) string { cmd := []string{"git", "describe", "--tags", "--always", name} result, _ := repo.RunQuiet(cmd) output := strings.Join(result.Stdout, "\n") log.Info("cmd =", cmd, output) return strings.TrimSpace(output) } */ func main() { me = new(mainType) gui.InitArg() me.pp = arg.MustParse(&argv) if argv.Bash { argv.doBash() os.Exit(0) } if len(argv.BashAuto) != 0 { argv.doBashAuto() os.Exit(0) } me.chats = chatpb.NewChats() if err := me.chats.ConfigLoad(); err != nil { badExit(err) } if verifyUuids(me.chats) { me.chats.ConfigSave() } if argv.Add != "" { log.Info("add new conversation to protobuf", argv.Add) pb := parseRichLog(argv.Add) verifyUuids(pb) all := pb.SortByUuid() for all.Scan() { chat := all.Next() log.Info("NEW CHAT", chat.From, chat.Uuid) if test := me.chats.FindByContentFile(chat.ContentFile); test != nil { log.Info("NOT NEW CHAT", test.ContentFile) continue } me.chats.AppendByUuid(chat) } pb.ConfigSave() okExit("") } if argv.Playback != nil { log.Info("do playback here") pb := formatRichLog("log/2025-08-20-final.text") pb.ConfigSave() okExit("") } log.Info("trying chatpb") pb := chatpb.ExampleChat() pb.ConfigSave() // if opening the GUI, always check git for dirty repos log.Info("open the gui here") // doGui() okExit("") } func verifyUuids(chats *chatpb.Chats) bool { var changed bool all := chats.SortByUuid() for all.Scan() { chat := all.Next() if chat.Uuid == "" { chat.Uuid = uuid.New().String() changed = true } } return changed }