2017-08-17 16:19:21 +00:00
# go-prompt
2017-08-14 18:36:30 +00:00
2018-02-15 14:50:39 +00:00
[![Go Report Card ](https://goreportcard.com/badge/github.com/c-bata/go-prompt )](https://goreportcard.com/report/github.com/c-bata/go-prompt)
![Software License ](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square )
2018-10-18 08:19:14 +00:00
[![GoDoc ](https://godoc.org/github.com/c-bata/go-prompt?status.svg )](https://godoc.org/github.com/c-bata/go-prompt)
2018-10-25 13:59:47 +00:00
[![Build Status ](https://travis-ci.org/c-bata/go-prompt.svg?branch=master )](https://travis-ci.org/c-bata/go-prompt)
2018-02-15 14:50:39 +00:00
2018-04-16 08:22:07 +00:00
A library for building powerful interactive prompts inspired by [python-prompt-toolkit ](https://github.com/jonathanslenders/python-prompt-toolkit ),
making it easier to build cross-platform command line tools using Go.
2017-07-03 14:36:56 +00:00
2017-08-15 10:01:09 +00:00
```go
package main
import (
"fmt"
"github.com/c-bata/go-prompt"
)
func completer(d prompt.Document) []prompt.Suggest {
s := []prompt.Suggest{
{Text: "users", Description: "Store the username and age"},
{Text: "articles", Description: "Store the article text posted by user"},
{Text: "comments", Description: "Store the text commented to articles"},
}
return prompt.FilterHasPrefix(s, d.GetWordBeforeCursor(), true)
}
func main() {
fmt.Println("Please select table.")
t := prompt.Input("> ", completer)
fmt.Println("You selected " + t)
}
```
2017-07-17 13:32:13 +00:00
2017-08-07 15:19:51 +00:00
#### Projects using go-prompt
2017-07-17 13:32:13 +00:00
2017-10-09 17:17:14 +00:00
* [c-bata/kube-prompt : An interactive kubernetes client featuring auto-complete written in Go. ](https://github.com/c-bata/kube-prompt )
2017-09-27 00:29:31 +00:00
* [rancher/cli : The Rancher Command Line Interface (CLI)is a unified tool to manage your Rancher server ](https://github.com/rancher/cli )
2018-03-09 00:59:41 +00:00
* [kubicorn/kubicorn : Simple, cloud native infrastructure for Kubernetes. ](https://github.com/kubicorn/kubicorn )
2017-10-09 17:41:59 +00:00
* [cch123/asm-cli : Interactive shell of assembly language(X86/X64) based on unicorn and rasm2 ](https://github.com/cch123/asm-cli )
2018-02-04 03:52:19 +00:00
* [ktr0731/evans : more expressive universal gRPC client ](https://github.com/ktr0731/evans )
2018-06-10 18:03:23 +00:00
* [CrushedPixel/moshpit: A Command-line tool for datamoshing. ](https://github.com/CrushedPixel/moshpit )
2019-03-30 07:15:26 +00:00
* [last-ent/testy-go: Testy Go: A tool for easy testing! ](https://github.com/last-ent/testy-go )
2019-03-29 14:27:23 +00:00
* [tiagorlampert/CHAOS: a PoC that allow generate payloads and control remote operating systems. ](https://github.com/tiagorlampert/CHAOS )
2019-05-21 11:56:22 +00:00
* [abs-lang/abs: ABS is a scripting language that works best on terminal. It tries to combine the elegance of languages such as Python, or Ruby, to the convenience of Bash. ](https://github.com/abs-lang/abs )
2019-05-22 02:31:43 +00:00
* [takashabe/btcli: btcli is a CLI client for the Bigtable. Has many read options and auto-completion. ](https://github.com/takashabe/btcli )
2019-07-08 12:22:29 +00:00
* [ysn2233/kafka-prompt: An interactive kafka-prompt(kafka-shell) built on existing kafka command client ](https://github.com/ysn2233/kafka-prompt )
2019-11-30 07:05:24 +00:00
* [fishi0x01/vsh: HashiCorp Vault interactive shell ](https://github.com/fishi0x01/vsh )
2020-01-26 11:49:49 +00:00
* [mstrYoda/docker-shell: A simple interactive prompt for docker ](https://github.com/mstrYoda/docker-shell )
2020-02-13 11:46:29 +00:00
* [c-bata/gh-prompt: An interactive GitHub CLI featuring auto-complete. ](https://github.com/c-bata/gh-prompt )
2020-03-21 14:08:17 +00:00
* [docker-slim/docker-slim: Don't change anything in your Docker container image and minify it by up to 30x (and for compiled languages even more) making it secure too! (free and open source) ](https://github.com/docker-slim/docker-slim )
2018-04-16 08:22:07 +00:00
* (If you create a CLI utility using go-prompt and want your own project to be listed here, please submit a GitHub issue.)
2017-07-16 18:41:00 +00:00
2017-08-12 14:43:35 +00:00
## Features
2017-08-15 10:01:09 +00:00
### Powerful auto-completion
2017-08-16 07:02:53 +00:00
[![demo ](https://github.com/c-bata/assets/raw/master/go-prompt/kube-prompt.gif )](https://github.com/c-bata/kube-prompt)
2017-08-15 10:01:09 +00:00
(This is a GIF animation of kube-prompt.)
2017-08-13 07:52:27 +00:00
### Flexible options
2017-08-12 14:43:35 +00:00
2018-02-14 13:56:34 +00:00
go-prompt provides many options. Please check [option section of GoDoc ](https://godoc.org/github.com/c-bata/go-prompt#Option ) for more details.
2017-08-12 14:43:35 +00:00
2017-08-16 07:02:53 +00:00
[![options ](https://github.com/c-bata/assets/raw/master/go-prompt/prompt-options.png )](#flexible-options)
2017-08-13 07:52:27 +00:00
### Keyboard Shortcuts
2018-04-16 08:22:07 +00:00
Emacs-like keyboard shortcuts are available by default (these also are the default shortcuts in Bash shell).
2017-08-13 07:52:27 +00:00
You can customize and expand these shortcuts.
2017-08-12 14:43:35 +00:00
2017-08-16 07:02:53 +00:00
[![keyboard shortcuts ](https://github.com/c-bata/assets/raw/master/go-prompt/keyboard-shortcuts.gif )](#keyboard-shortcuts)
2017-08-12 14:43:35 +00:00
2018-04-16 08:22:07 +00:00
Key Binding | Description
---------------------|---------------------------------------------------------
< kbd > Ctrl + A< / kbd > | Go to the beginning of the line (Home)
< kbd > Ctrl + E< / kbd > | Go to the end of the line (End)
< kbd > Ctrl + P< / kbd > | Previous command (Up arrow)
< kbd > Ctrl + N< / kbd > | Next command (Down arrow)
< kbd > Ctrl + F< / kbd > | Forward one character
< kbd > Ctrl + B< / kbd > | Backward one character
< kbd > Ctrl + D< / kbd > | Delete character under the cursor
< kbd > Ctrl + H< / kbd > | Delete character before the cursor (Backspace)
< kbd > Ctrl + W< / kbd > | Cut the word before the cursor to the clipboard
< kbd > Ctrl + K< / kbd > | Cut the line after the cursor to the clipboard
< kbd > Ctrl + U< / kbd > | Cut the line before the cursor to the clipboard
< kbd > Ctrl + L< / kbd > | Clear the screen
2017-08-12 14:43:35 +00:00
2017-08-15 10:01:09 +00:00
### History
2017-08-12 14:43:35 +00:00
2018-04-16 08:22:07 +00:00
You can use < kbd > Up arrow< / kbd > and < kbd > Down arrow< / kbd > to walk through the history of commands executed.
2017-07-16 18:41:00 +00:00
2017-08-16 07:02:53 +00:00
[![History ](https://github.com/c-bata/assets/raw/master/go-prompt/history.gif )](#history)
2017-07-03 14:36:56 +00:00
2018-02-14 07:59:30 +00:00
### Multiple platform support
2018-04-16 08:22:07 +00:00
We have confirmed go-prompt works fine in the following terminals:
2018-02-14 07:59:30 +00:00
* iTerm2 (macOS)
* Terminal.app (macOS)
* Command Prompt (Windows)
2018-04-16 08:22:07 +00:00
* gnome-terminal (Ubuntu)
2018-02-14 07:59:30 +00:00
2017-08-13 07:52:27 +00:00
## Links
2017-07-16 17:58:51 +00:00
2017-08-17 16:19:21 +00:00
* [Change Log ](./CHANGELOG.md )
2018-02-15 14:50:39 +00:00
* [GoDoc ](http://godoc.org/github.com/c-bata/go-prompt )
* [gocover.io ](https://gocover.io/github.com/c-bata/go-prompt )
2017-08-09 03:50:16 +00:00
2017-08-12 14:43:35 +00:00
## Author
2017-08-09 03:50:16 +00:00
2017-08-12 14:43:35 +00:00
Masashi Shibata
2017-08-09 03:50:16 +00:00
2017-08-12 14:43:35 +00:00
* Twitter: [@c\_bata\_ ](https://twitter.com/c_bata_/ )
* Github: [@c-bata ](https://github.com/c-bata/ )
2018-07-10 17:49:11 +00:00
2018-04-16 08:22:07 +00:00
## License
2017-08-15 10:01:09 +00:00
2018-04-16 08:22:07 +00:00
This software is licensed under the MIT license, see [LICENSE ](./LICENSE ) for more information.
2018-08-26 11:30:26 +00:00