diff options
| author | Jeff Carr <[email protected]> | 2025-10-26 08:29:43 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-26 08:29:43 -0500 |
| commit | 4684799ca211b13b821a51cb0b3c87e43bd95aa8 (patch) | |
| tree | fc23a62eed2b8d091e135c69f7e90bd6df24ff31 /complete.go | |
| parent | 213d7bd6749471c583534e76f9c29c5b0183a4cb (diff) | |
new argv design
Diffstat (limited to 'complete.go')
| -rw-r--r-- | complete.go | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/complete.go b/complete.go new file mode 100644 index 0000000..f9165e0 --- /dev/null +++ b/complete.go @@ -0,0 +1,84 @@ +// 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/lib/debugger" + "go.wit.com/lib/fhelp" + "go.wit.com/lib/gui/logsettings" + "go.wit.com/lib/protobuf/argvpb" + "go.wit.com/log" +) + +// sent via -ldflags +var VERSION string +var BUILDTIME string + +// used for shell auto completion +var APPNAME string = "wit" // todo: get this from $0 ? + +func (args) MustParse() error { + me.pp = arg.MustParse(&argv) + return nil +} + +func init() { + if debugger.ArgDebug() { + log.Info("cmd line --debugger == true") + go func() { + log.Sleep(2) + debugger.DebugWindow() + }() + } + + if debugger.ArgLogger() { + log.Info("cmd line --loggger == true") + go func() { + log.Sleep(4) + logsettings.LogWindow() + logsettings.LogWindow() + }() + } +} + +func (args) ArgvGui() error { + me.myGui = fhelp.Gui() // adds the GUI package argv support + return nil +} + +func (a args) DoAutoComplete(pb *argvpb.Argv) { + base := []string{"build", "upgrade", "git", "publish", "pb", "linux", "droplet", "test"} + base = append(base, "--version", "--force", "--all", "--dry-run") + + // add these only if installed + if _, err := fhelp.CheckCmd("zood"); err == nil { + base = append(base, "zoo") + } + if _, err := fhelp.CheckCmd("forge"); err == nil { + base = append(base, "forge") + } + if _, err := fhelp.CheckCmd("go-clone"); err == nil { + base = append(base, "go-clone") + } + if areSuperuser() { + base = append(base, "upgrade") + base = append(base, "rdate") + } + if pb.GetCmd() == "" { + fmt.Fprintf(argvpb.Stdout, strings.Join(base, " ")) + 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) +} |
