diff --git a/argv.go b/argv.go index d6d2357..5af91c9 100644 --- a/argv.go +++ b/argv.go @@ -3,6 +3,11 @@ package main +import ( + "fmt" + "os" +) + /* this parses the command line arguements using alex flint's go-arg */ @@ -48,3 +53,22 @@ func (a args) Description() string { regex -- interact with Googles' Gemini AI ` } + +/* + handles shell autocomplete +*/ + +func (a args) DoAutoComplete(argv []string) { + switch argv[0] { + case "playback": + fmt.Println("long --uuid purge last submit") + case "clean": + fmt.Println("") + default: + if argv[0] == ARGNAME { + // list the subcommands here + fmt.Println("--json interact playback clean") + } + } + os.Exit(0) +} diff --git a/argvAutoshell.go b/argvAutoshell.go deleted file mode 100644 index 250da3f..0000000 --- a/argvAutoshell.go +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2017-2025 WIT.COM Inc. All rights reserved. -// Use of this source code is governed by the GPL 3.0 - -package main - -import ( - "fmt" - "os" -) - -/* - handles shell autocomplete -*/ - -// used for shell auto completion -// var ARGNAME string = "forge" // todo: get this from $0 ? - -func deleteMatch() { - // f := forgedb.InitSimple() - fmt.Println("go.wit.com/lib/gui/repostatus todo: need to do this") -} - -func (args) doBashAuto() { - // argv.doBashHelp() - switch argv.BashAuto[0] { - case "playback": - fmt.Println("long --uuid purge last submit") - case "clean": - fmt.Println("") - default: - if argv.BashAuto[0] == ARGNAME { - // list the subcommands here - fmt.Println("--json interact playback clean") - } - } - os.Exit(0) -} - -// prints help to STDERR // TODO: move everything below this to go-args -func (args) doBashHelp() { - if argv.BashAuto[1] != "''" { - // if this is not blank, then the user has typed something - return - } - if argv.BashAuto[0] != ARGNAME { - // if this is not the name of the command, the user already started doing something - return - } - if argv.BashAuto[0] == ARGNAME { - me.pp.WriteHelp(os.Stderr) - return - } - fmt.Fprintln(os.Stderr, "") - fmt.Fprintln(os.Stderr, "something went wrong with the GO args package") - fmt.Fprintln(os.Stderr, "") -} - -// complete -F forge --bash forge -func (args) doBash() { - fmt.Println("# add this in your bashrc:") - fmt.Println("") - fmt.Println("# todo: add this to go-arg as a 'hidden' go-arg option --bash") - fmt.Println("#") - fmt.Println("# Put the below in the file: ~/.local/share/bash-completion/completions/" + ARGNAME) - fmt.Println("#") - fmt.Println("# todo: make this output work/parse with:") - fmt.Println("# complete -C " + ARGNAME + " --bash go") - fmt.Println("") - fmt.Println("_" + ARGNAME + "_complete()") - fmt.Println("{") - fmt.Println(" # sets local to this func vars") - fmt.Println(" local cur prev all") - fmt.Println(" cur=${COMP_WORDS[COMP_CWORD]}") - fmt.Println(" prev=${COMP_WORDS[COMP_CWORD-1]}") - fmt.Println(" all=${COMP_WORDS[@]}") - fmt.Println("") - fmt.Println(" # this is where we generate the go-arg output") - fmt.Println(" GOARGS=$(" + ARGNAME + " --auto-complete $prev \\'$cur\\' $all)") - fmt.Println("") - fmt.Println(" # this compares the command line input from the user") - fmt.Println(" # to whatever strings we output") - fmt.Println(" COMPREPLY=( $(compgen -W \"$GOARGS\" -- $cur) ) # THIS WORKS") - fmt.Println(" return 0") - fmt.Println("}") - fmt.Println("complete -F _" + ARGNAME + "_complete " + ARGNAME) - fmt.Println("") - fmt.Println("# copy and paste the above into your bash shell should work") - os.Exit(0) -} diff --git a/doGui.go b/doGui.go index 5e1462e..1ee2468 100644 --- a/doGui.go +++ b/doGui.go @@ -27,24 +27,17 @@ func debug() { } func doGui() { - me.myGui = gui.New() - // me.myGui.SetAppDefaultPlugin(me.forge.Config.DefaultGui) - me.myGui.Default() - win := gadgets.NewGenericWindow("regex: a WIT Cloud private AI tool", "Current Conversations") drawWindow(win) win.Custom = func() { log.Warn("MAIN WINDOW CLOSE") - me.myGui.StandardExit() + gui.StandardExit() os.Exit(0) } me.mainWindow = win - // sits here forever - debug() - } func drawWindow(win *gadgets.GenericWindow) { diff --git a/main.go b/main.go index ea0f24b..e85db7b 100644 --- a/main.go +++ b/main.go @@ -7,11 +7,10 @@ package main import ( "embed" - "os" "github.com/google/uuid" "go.wit.com/dev/alexflint/arg" - "go.wit.com/gui" + "go.wit.com/lib/gui/prep" "go.wit.com/lib/protobuf/chatpb" "go.wit.com/log" ) @@ -32,20 +31,12 @@ var ARGNAME string = "regex" var configSave bool func main() { - var err error me = new(mainType) - gui.InitArg() + prep.Bash(ARGNAME, argv.DoAutoComplete) // this line should be: prep.Bash(argv) + me.myGui = prep.Gui() // prepares the GUI package for go-args me.pp = arg.MustParse(&argv) - if argv.Bash { - argv.doBash() - os.Exit(0) - } - if len(argv.BashAuto) != 0 { - argv.doBashAuto() - os.Exit(0) - } - + var err error // load the default chat protobuf me.chats = chatpb.NewChats() if err := me.chats.ConfigLoad(); err != nil { @@ -109,11 +100,9 @@ func main() { okExit("") } - doGui() - - // by default, start interacting with gemini-cli - // me.pp.WriteHelp(os.Stdout) - okExit("") + me.myGui.Start() // loads the GUI toolkit + doGui() // start making our forge GUI + debug() // sits here forever } func verifyUuids(chats *chatpb.Chats) bool { diff --git a/structs.go b/structs.go index 4de5abd..fac6ee5 100644 --- a/structs.go +++ b/structs.go @@ -7,8 +7,8 @@ import ( "context" "go.wit.com/dev/alexflint/arg" - "go.wit.com/gui" "go.wit.com/lib/gadgets" + "go.wit.com/lib/gui/prep" "go.wit.com/lib/protobuf/chatpb" "google.golang.org/genai" ) @@ -22,6 +22,6 @@ type mainType struct { client *genai.Client // the Google Gemini AI client variable ctx context.Context // global context. what does this acutally mean? lastChat *chatpb.Chat // the last chat. append to here - myGui *gui.Node // the gui toolkit handle + myGui *prep.GuiPrep // the gui toolkit handle mainWindow *gadgets.GenericWindow // the main GUI window }