summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--argv.go24
-rw-r--r--argvAutoshell.go89
-rw-r--r--doGui.go9
-rw-r--r--main.go25
-rw-r--r--structs.go4
5 files changed, 34 insertions, 117 deletions
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
}