// 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 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 != "" { me.chats.AddFile(argv.Add) me.chats.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 }