summaryrefslogtreecommitdiff
path: root/gocomplete/complete.go
diff options
context:
space:
mode:
authorEyal Posener <[email protected]>2017-05-06 00:25:27 +0300
committerEyal Posener <[email protected]>2017-05-06 00:25:27 +0300
commit1af7c0b3b7bc0e4bf5605be7e02154a8876cba84 (patch)
treebb3220c9de676f16970ffb7c204aa3377194661f /gocomplete/complete.go
parentc8263230e11aa755d3b0b964d4bf7ff296661f5e (diff)
Roughly add all go commands
Diffstat (limited to 'gocomplete/complete.go')
-rw-r--r--gocomplete/complete.go178
1 files changed, 166 insertions, 12 deletions
diff --git a/gocomplete/complete.go b/gocomplete/complete.go
index 9233b4e..57fbaa1 100644
--- a/gocomplete/complete.go
+++ b/gocomplete/complete.go
@@ -4,33 +4,187 @@ import (
"github.com/posener/complete"
)
-var (
- build = complete.Command{
+var predictEllipsis = complete.Predicate{
+ Predictor: func() []complete.Option { return []complete.Option{complete.Arg("./...")} },
+}
+
+var goFilesOrPackages = complete.PredictFiles("**.go").
+ Or(complete.PredictDirs("./")).
+ Or(predictEllipsis)
+
+func main() {
+ build := complete.Command{
Flags: complete.Flags{
- "-o": complete.PredictFiles("*"),
+ "-o": complete.PredictFiles("**"),
"-i": complete.PredictNothing,
+
+ "-a": complete.PredictNothing,
+ "-n": complete.PredictNothing,
+ "-p": complete.PredictAnything,
+ "-race": complete.PredictNothing,
+ "-msan": complete.PredictNothing,
+ "-v": complete.PredictNothing,
+ "-work": complete.PredictNothing,
+ "-x": complete.PredictNothing,
+ "-asmflags": complete.PredictAnything,
+ "-buildmode": complete.PredictAnything,
+ "-compiler": complete.PredictAnything,
+ "-gccgoflags": complete.PredictAnything,
+ "-gcflags": complete.PredictAnything,
+ "-installsuffix": complete.PredictAnything,
+ "-ldflags": complete.PredictAnything,
+ "-linkshared": complete.PredictNothing,
+ "-pkgdir": complete.PredictDirs("./"),
+ "-tags": complete.PredictAnything,
+ "-toolexec": complete.PredictAnything,
},
- Args: complete.PredictFiles("**.go").Or(complete.PredictDirs("./")),
+ Args: goFilesOrPackages,
}
- test = complete.Command{
+ run := complete.Command{
Flags: complete.Flags{
- "-run": complete.PredictAnything,
- "-count": complete.PredictAnything,
+ "-exec": complete.PredictAnything,
},
+ Args: complete.PredictFiles("**.go"),
}
- gogo = complete.Command{
+ test := complete.Command{
+ Flags: complete.Flags{
+ "-args": complete.PredictAnything,
+ "-c": complete.PredictNothing,
+ "-exec": complete.PredictAnything,
+
+ "-bench": predictTest("Benchmark"),
+ "-benchtime": complete.PredictAnything,
+ "-count": complete.PredictAnything,
+ "-cover": complete.PredictNothing,
+ "-covermode": complete.PredictSet([]string{"set", "count", "atomic"}),
+ "-coverpkg": complete.PredictDirs("./"),
+ "-cpu": complete.PredictAnything,
+ "-run": predictTest("test"),
+ "-short": complete.PredictNothing,
+ "-timeout": complete.PredictAnything,
+
+ "-benchmem": complete.PredictNothing,
+ "-blockprofile": complete.PredictFiles("**.out"),
+ "-blockprofilerate": complete.PredictAnything,
+ "-coverprofile": complete.PredictFiles("**.out"),
+ "-cpuprofile": complete.PredictFiles("**.out"),
+ "-memprofile": complete.PredictFiles("**.out"),
+ "-memprofilerate": complete.PredictAnything,
+ "-mutexprofile": complete.PredictFiles("**.out"),
+ "-mutexprofilefraction": complete.PredictAnything,
+ "-outputdir": complete.PredictDirs("./"),
+ "-trace": complete.PredictFiles("**.out"),
+ },
+ Args: goFilesOrPackages,
+ }
+
+ fmt := complete.Command{
+ Flags: complete.Flags{
+ "-n": complete.PredictNothing,
+ "-x": complete.PredictNothing,
+ },
+ Args: goFilesOrPackages,
+ }
+
+ get := complete.Command{
+ Flags: complete.Flags{
+ "-d": complete.PredictNothing,
+ "-f": complete.PredictNothing,
+ "-fix": complete.PredictNothing,
+ "-insecure": complete.PredictNothing,
+ "-t": complete.PredictNothing,
+ "-u": complete.PredictNothing,
+ },
+ Args: goFilesOrPackages,
+ }
+
+ generate := complete.Command{
+ Flags: complete.Flags{
+ "-n": complete.PredictNothing,
+ "-x": complete.PredictNothing,
+ "-v": complete.PredictNothing,
+ "-run": complete.PredictAnything,
+ },
+ Args: goFilesOrPackages,
+ }
+
+ vet := complete.Command{
+ Flags: complete.Flags{
+ "-n": complete.PredictNothing,
+ "-x": complete.PredictNothing,
+ },
+ Args: complete.PredictDirs("./"),
+ }
+
+ list := complete.Command{
+ Flags: complete.Flags{
+ "-e": complete.PredictNothing,
+ "-f": complete.PredictAnything,
+ "-json": complete.PredictNothing,
+ },
+ Args: complete.PredictDirs("./"),
+ }
+
+ tool := complete.Command{
+ Flags: complete.Flags{
+ "-n": complete.PredictNothing,
+ },
+ Args: complete.PredictAnything,
+ }
+
+ clean := complete.Command{
+ Flags: complete.Flags{
+ "-i": complete.PredictNothing,
+ "-r": complete.PredictNothing,
+ "-n": complete.PredictNothing,
+ "-x": complete.PredictNothing,
+ },
+ Args: complete.PredictDirs("./"),
+ }
+
+ env := complete.Command{
+ Args: complete.PredictAnything,
+ }
+
+ bug := complete.Command{}
+ version := complete.Command{}
+
+ fix := complete.Command{
+ Args: complete.PredictDirs("./"),
+ }
+
+ // commands that also accepts the build flags
+ for name, options := range build.Flags {
+ test.Flags[name] = options
+ run.Flags[name] = options
+ list.Flags[name] = options
+ vet.Flags[name] = options
+ }
+
+ gogo := complete.Command{
Sub: complete.Commands{
- "build": build,
- "test": test,
+ "build": build,
+ "install": build, // install and build have the same flags
+ "run": run,
+ "test": test,
+ "fmt": fmt,
+ "get": get,
+ "generate": generate,
+ "vet": vet,
+ "list": list,
+ "tool": tool,
+ "clean": clean,
+ "env": env,
+ "bug": bug,
+ "fix": fix,
+ "version": version,
},
Flags: complete.Flags{
"-h": complete.PredictNothing,
},
}
-)
-func main() {
complete.New(gogo).Complete()
}