// 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" ) /* this parses the command line arguements using alex flint's go-arg */ var argv args type args struct { Uuid string `arg:"--uuid" help:"look at this uuid"` Topic string `arg:"--topic" help:"set the topic"` JsonFile string `arg:"--json" help:"import a JSON file from gemini-cli"` Interact *EmptyCmd `arg:"subcommand:interact" help:"open env EDITOR"` Playback *PlaybackCmd `arg:"subcommand:playback" help:"dump your prior conversations to the terminal'"` NewChat *PlaybackCmd `arg:"subcommand:newchat" help:"used by gemini-cli on startup"` Clean *CleanCmd `arg:"subcommand:clean" help:"cleanup the files in /tmp"` 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"` BashAuto []string `arg:"--auto-complete" help:"todo: move this to go-arg"` } type EmptyCmd struct { } type CleanCmd struct { Match string `arg:"positional"` } type PlaybackCmd struct { Last *EmptyCmd `arg:"subcommand:last" help:"dump the last one"` List *EmptyCmd `arg:"subcommand:list" help:"list memories"` Long *EmptyCmd `arg:"subcommand:long" help:"show info on each chat"` Purge *EmptyCmd `arg:"subcommand:purge" help:"verify chat uuids & purge empty chats"` Submit *EmptyCmd `arg:"subcommand:submit" help:"convert and submit the last entry"` } func (args) Version() string { return ARGNAME + " " + VERSION + " Built on " + BUILDTIME } func (a args) Description() string { return ` 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) }