summaryrefslogtreecommitdiff
path: root/complete.go
diff options
context:
space:
mode:
Diffstat (limited to 'complete.go')
-rw-r--r--complete.go49
1 files changed, 36 insertions, 13 deletions
diff --git a/complete.go b/complete.go
index 0cd7513..191cf90 100644
--- a/complete.go
+++ b/complete.go
@@ -5,10 +5,13 @@ package main
import (
"fmt"
+ "os"
+ "path/filepath"
"strings"
"go.wit.com/dev/alexflint/arg"
"go.wit.com/gui"
+ "go.wit.com/lib/config"
"go.wit.com/lib/debugger"
"go.wit.com/lib/env"
"go.wit.com/lib/fhelp"
@@ -93,31 +96,51 @@ func (c CleanCmd) Match(partial string) []string {
// sends the strings to bash or zsh that will be your options
func (a args) DoAutoComplete() error {
- if argvpb.PB.IsMatch("mode.config") {
- matches := []string{"mine", "favorites"}
- fmt.Fprintf(argvpb.Stdout, strings.Join(matches, " "))
+ var err error
+ if me.pp == nil {
+ me.pp, err = arg.ParseFlagsArgv(&argv)
+ if err != nil {
+ fmt.Fprintf(argvpb.Stderr, "returned from parseFlagsArgv(%v)\n", err)
+ }
+ }
+ if argvpb.PB.IsMatch("mode.--config") {
+ matches, _ := matchModeDirs()
+ fmt.Fprintf(argvpb.Stdout, matches)
return nil
}
if argvpb.PB.IsMatch("mode") {
- matches := []string{"once", "many", "mine", "favorites"}
- fmt.Fprintf(argvpb.Stdout, strings.Join(matches, " "))
+ err = me.pp.WriteHelpForAutocomplete("", "mode")
+ matches := []string{"jwc", "false"}
+ fmt.Fprintf(argvpb.Stdout, " "+strings.Join(matches, " "))
return nil
}
if argvpb.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")
+ matches = append(matches, "--version", "--force", "--all", "--verbose")
fmt.Fprintf(argvpb.Stdout, strings.Join(matches, " "))
return nil
}
- 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", argvpb.PB.Real)
- fmt.Fprintf(argvpb.Stderr, "returned from WriteHelpForAutocomplete(%v)\n", err)
+ if err != nil {
+ fmt.Fprintf(argvpb.Stderr, "returned from WriteHelpForAutocomplete() pb.Real(%v)\n", argvpb.PB.Real)
+ fmt.Fprintf(argvpb.Stderr, "returned from WriteHelpForAutocomplete(%v)\n", err)
+ }
return err
}
+
+func matchModeDirs() (string, error) {
+ configDir, _ := os.UserConfigDir()
+ globPattern := filepath.Join(configDir, "forge", "*")
+ files, err := filepath.Glob(globPattern)
+ var match string
+ for _, file := range files {
+ if config.IsDir(file) {
+ _, base := filepath.Split(file)
+ match += base + " "
+ }
+ }
+ // log.Info("glob:", globPattern, "matchdirs:", match)
+ return match, err
+}