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)
|
|
|
|
|
2017-08-13 07:52:27 +00:00
|
|
|
Library for building a powerful interactive prompt, inspired by [python-prompt-toolkit](https://github.com/jonathanslenders/python-prompt-toolkit).
|
2018-02-14 08:02:08 +00:00
|
|
|
More easy to build a multi-platform binary of the command line tools because written in Golang.
|
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)
|
2017-08-17 15:31:15 +00:00
|
|
|
* (If you create a CLI 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
|
|
|
|
|
|
|
|
Emacs-like keyboard shortcut is available by default (it's also default shortcuts in Bash shell).
|
|
|
|
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
|
|
|
|
2017-08-13 07:52:27 +00:00
|
|
|
KeyBinding | 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/delete the Line before the cursor to the clipboard.
|
2018-02-14 06:37:32 +00:00
|
|
|
<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
|
|
|
|
2017-08-15 10:01:09 +00:00
|
|
|
You can use up-arrow and down-arrow 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
|
|
|
|
2017-07-16 17:58:51 +00:00
|
|
|
|
2018-02-14 07:59:30 +00:00
|
|
|
### Multiple platform support
|
|
|
|
|
2018-02-14 08:02:08 +00:00
|
|
|
We confirmed go-prompt works fine on following terminals:
|
2018-02-14 07:59:30 +00:00
|
|
|
|
|
|
|
* iTerm2 (macOS)
|
|
|
|
* Terminal.app (macOS)
|
|
|
|
* Command Prompt (Windows)
|
|
|
|
* GNU Terminal (Ubuntu)
|
|
|
|
|
|
|
|
|
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/)
|
2017-08-18 00:55:22 +00:00
|
|
|
* Facebook: [Masashi Shibata](https://www.facebook.com/masashi.cbata)
|
2017-08-09 03:50:16 +00:00
|
|
|
|
|
|
|
## LICENSE
|
|
|
|
|
|
|
|
This software is licensed under the MIT License (See [LICENSE](./LICENSE) ).
|
2017-08-15 10:01:09 +00:00
|
|
|
|