readme: Update according to go doc ()

* Update readme according to go doc
This commit is contained in:
goreadme[bot] 2019-03-08 09:45:57 +02:00 committed by Eyal Posener
parent eb60014a10
commit af07aa5181
1 changed files with 53 additions and 50 deletions

103
README.md
View File

@ -12,31 +12,33 @@ Writing bash completion scripts is a hard work. This package provides an easy wa
to create bash completion scripts for any command, and also an easy way to install/uninstall to create bash completion scripts for any command, and also an easy way to install/uninstall
the completion of the command. the completion of the command.
## go command bash completion #### Go Command Bash Completion
In [gocomplete](./cmd/gocomplete) there is an example for bash completion for the `go` command line. In [./cmd/gocomplete](./cmd/gocomplete) there is an example for bash completion for the `go` command line.
This is an example that uses the `complete` package on the `go` command - the `complete` package This is an example that uses the `complete` package on the `go` command - the `complete` package
can also be used to implement any completions, see [Usage](#usage). can also be used to implement any completions, see #usage.
### Install #### Install
1. Type in your shell: 1. Type in your shell:
go get -u github.com/posener/complete/gocomplete ```go
gocomplete -install go get -u github.com/posener/complete/gocomplete
gocomplete -install
```
2. Restart your shell 2. Restart your shell
Uninstall by `gocomplete -uninstall` Uninstall by `gocomplete -uninstall`
### Features #### Features
- Complete `go` command, including sub commands and all flags. - Complete `go` command, including sub commands and all flags.
- Complete packages names or `.go` files when necessary. - Complete packages names or `.go` files when necessary.
- Complete test names after `-run` flag. - Complete test names after `-run` flag.
## complete package #### Complete package
Supported shells: Supported shells:
@ -44,7 +46,7 @@ Supported shells:
- [x] zsh - [x] zsh
- [x] fish - [x] fish
### Usage #### Usage
Assuming you have program called `run` and you want to have bash completion Assuming you have program called `run` and you want to have bash completion
for it, meaning, if you type `run` then space, then press the `Tab` key, for it, meaning, if you type `run` then space, then press the `Tab` key,
@ -58,61 +60,62 @@ options for `run`.
So here it is: So here it is:
import "github.com/posener/complete" ```go
import "github.com/posener/complete"
func main() { func main() {
// create a Command object, that represents the command we want // create a Command object, that represents the command we want
// to complete. // to complete.
run := complete.Command{ run := complete.Command{
// Sub defines a list of sub commands of the program, // Sub defines a list of sub commands of the program,
// this is recursive, since every command is of type command also. // this is recursive, since every command is of type command also.
Sub: complete.Commands{ Sub: complete.Commands{
// add a build sub command // add a build sub command
"build": complete.Command { "build": complete.Command {
// define flags of the build sub command // define flags of the build sub command
Flags: complete.Flags{ Flags: complete.Flags{
// build sub command has a flag '-cpus', which // build sub command has a flag '-cpus', which
// expects number of cpus after it. in that case // expects number of cpus after it. in that case
// anything could complete this flag. // anything could complete this flag.
"-cpus": complete.PredictAnything, "-cpus": complete.PredictAnything,
},
}, },
}, },
},
// define flags of the 'run' main command // define flags of the 'run' main command
Flags: complete.Flags{ Flags: complete.Flags{
// a flag -o, which expects a file ending with .out after // a flag -o, which expects a file ending with .out after
// it, the tab completion will auto complete for files matching // it, the tab completion will auto complete for files matching
// the given pattern. // the given pattern.
"-o": complete.PredictFiles("*.out"), "-o": complete.PredictFiles("*.out"),
}, },
// define global flags of the 'run' main command // define global flags of the 'run' main command
// those will show up also when a sub command was entered in the // those will show up also when a sub command was entered in the
// command line // command line
GlobalFlags: complete.Flags{ GlobalFlags: complete.Flags{
// a flag '-h' which does not expects anything after it // a flag '-h' which does not expects anything after it
"-h": complete.PredictNothing, "-h": complete.PredictNothing,
}, },
}
// run the command completion, as part of the main() function.
// this triggers the autocompletion when needed.
// name must be exactly as the binary that we want to complete.
complete.New("run", run).Run()
} }
### Self completing program // run the command completion, as part of the main() function.
// this triggers the autocompletion when needed.
// name must be exactly as the binary that we want to complete.
complete.New("run", run).Run()
}
```
#### Self completing program
In case that the program that we want to complete is written in go we In case that the program that we want to complete is written in go we
can make it self completing. can make it self completing.
Here is an example: [./example/self/main.go](./example/self/main.go) .
Here is an [example](./example/self/main.go)
## Sub Packages ## Sub Packages
@ -120,6 +123,6 @@ Here is an [example](./example/self/main.go)
* [gocomplete](./gocomplete): Package main is complete tool for the go command line * [gocomplete](./gocomplete): Package main is complete tool for the go command line
* [match](./match) * [match](./match): Package match contains matchers that decide if to apply completion.
Created by [goreadme](https://github.com/apps/goreadme) Created by [goreadme](https://github.com/apps/goreadme)