diff options
| author | Jeff Carr <[email protected]> | 2025-10-25 23:06:27 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-25 23:06:27 -0500 |
| commit | 1a602f3ed11e7be99f965e78dbe17088989b7612 (patch) | |
| tree | d7e1085399f04ef2edb3545d3ddda0eef92a00df /complete.go | |
| parent | a60277a0d2b0705d25dff251068e85ffe45b2f0c (diff) | |
try out these names
Diffstat (limited to 'complete.go')
| -rw-r--r-- | complete.go | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/complete.go b/complete.go new file mode 100644 index 0000000..987a812 --- /dev/null +++ b/complete.go @@ -0,0 +1,126 @@ +// 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" + "strings" + + "go.wit.com/dev/alexflint/arg" + "go.wit.com/gui" + "go.wit.com/lib/debugger" + "go.wit.com/lib/env" + "go.wit.com/lib/fhelp" + "go.wit.com/lib/protobuf/argvpb" + "go.wit.com/log" +) + +// sent via -ldflags // is there a better way? +var VERSION string +var BUILDTIME string + +// used for shell auto completion +var APPNAME string = "forge" + +func (args) InitArgv() (string, string, string) { + return APPNAME, BUILDTIME, VERSION +} + +func (args) InitGui() error { + // panic("got here") + arg.Register(&gui.ArgvGui) + // me.gui = gui.PreInit() + me.myGui = fhelp.Gui() + return nil +} + +func (args) Exit() { + gui.UnloadToolkits() + if env.Verbose() { + log.Info("argv.Exit() called", APPNAME+".Exit() because env.Verbose() == true") + } + // remove this from the template for your app (or make one for youself if you need it) + forgeExit() // custom forge shutdown function +} + +func (args) MustParse() error { + me.pp = arg.MustParse(&argv) + return nil +} + +func (a args) Description() string { + // doHelp() + + return ` +forge -- a tool to manage lots of git repos. forge includes a GUI and TUI. + + forge only executes the 'git' command. Everything it does, you can run by hand with 'git'. + + Orginally written to maintain the +50 GO git repositories for the WIT Private Cloud +` +} + +// arg.Register(&argGui) +// log.Info("ArgvGui() started") +func (args) ArgvGui() error { + me.myGui = fhelp.Gui() // adds the GUI package argv support + me.origGui = gui.New() + return nil +} + +func (args) ArgvDebugger() bool { + debugger.InitDebugger() + // me.myGui = gui.Init() + return true +} + +func (args) Examples() string { + var out string + out += "forge show # show the state of all your repos\n" + out += "forge normal # the defaults for 'normal' forge distributed development\n" + out += " # it will makes a user branch in every git repo\n" + out += "forge clean # removes changes forge might have made\n" + out += " # purges all untracked git files, etc\n" + out += "forge pull --force # 'git pull' on all repos\n" + out += "forge commit --al # 'git commit' in every dirty repo\n" + out += "forge merge --all # 'git merge' all patches to devel & master\n" + out += "forge add # scan your current directory for all git repos\n" + return out +} + +// matches +func (c CleanCmd) Match(partial string) []string { + // return repos here + return []string{"go.wit.com/apps/forge", "go.wit.com/apps/virtigo"} +} + +// sends the strings to bash or zsh that will be your options +func (a args) SendCompletionStrings(pb *argvpb.Argv) { + if pb.IsMatch("mode.config") { + matches := []string{"mine", "favorites"} + fmt.Fprintf(argvpb.Stdout, strings.Join(matches, " ")) + return + } + if pb.IsMatch("mode") { + matches := []string{"once", "many", "mine", "favorites"} + fmt.Fprintf(argvpb.Stdout, strings.Join(matches, " ")) + return + } + if pb.GetCmd() == "" { + // these are base autocomplete strings + matches := []string{"clean", "commit", "merge", "patch", "normal", "pull", "rebuild", "generate", "config"} + matches = append(matches, "show", "add", "fixer", "dev", "verify", "mode", "gui", "whatchanged") + matches = append(matches, "--version", "--force", "--all") + fmt.Fprintf(argvpb.Stdout, strings.Join(matches, " ")) + return + } + var err error + if me.pp == nil { + me.pp, err = arg.ParseFlagsArgv(&argv) + fmt.Fprintf(argvpb.Stderr, "returned from parseFlagsArgv(%v)\n", err) + } + err = me.pp.WriteHelpForAutocomplete(argvpb.PB.Partial, argvpb.PB.Real...) + fmt.Fprintf(argvpb.Stderr, "returned from WriteHelpForAutocomplete() pb.Real(%v)\n", pb.Real) + fmt.Fprintf(argvpb.Stderr, "returned from WriteHelpForAutocomplete(%v)\n", err) +} |
