From faa5368bc50c84c3a1dfaf67bc21c2cd2bbb921f Mon Sep 17 00:00:00 2001 From: Christine Dodrill Date: Thu, 28 Nov 2019 19:24:35 +0000 Subject: completion --- internal/internal.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'internal') diff --git a/internal/internal.go b/internal/internal.go index 1c78d60..e63f6f7 100644 --- a/internal/internal.go +++ b/internal/internal.go @@ -7,7 +7,9 @@ import ( "fmt" "io/ioutil" "os" + "path/filepath" + "github.com/posener/complete" "go4.org/legal" "within.website/confyg/flagconfyg" "within.website/ln" @@ -83,3 +85,23 @@ func HandleStartup() { func init() { http.DefaultTransport = useragent.Transport("within.website-x", "https://within.website/.x.botinfo", http.DefaultTransport) } + +func HandleCompletion(args complete.Predictor, subcommands complete.Commands) { + cmd := complete.Command{ + Flags: map[string]complete.Predictor{}, + Sub: subcommands, + Args: args, + } + + flag.CommandLine.VisitAll(func(fl *flag.Flag) { + cmd.Flags["-"+fl.Name] = complete.PredictAnything + + if fl.DefValue == "true" || fl.DefValue == "false" { + cmd.Flags["-"+fl.Name] = complete.PredictNothing + } + }) + + if complete.New(filepath.Base(os.Args[0]), cmd).Run() { + os.Exit(0) + } +} -- cgit v1.2.3