diff options
Diffstat (limited to 'complete.go')
| -rw-r--r-- | complete.go | 49 |
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 +} |
