You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
3 weeks ago | |
---|---|---|
.github | 1 year ago | |
_example | 5 months ago | |
_tools | 5 months ago | |
completer | 5 months ago | |
internal | 3 weeks ago | |
.gitignore | 4 years ago | |
CHANGELOG.md | 12 months ago | |
LICENSE | 5 years ago | |
Makefile | 2 years ago | |
README.md | 12 months ago | |
buffer.go | 5 months ago | |
buffer_test.go | 4 years ago | |
completion.go | 5 months ago | |
completion_test.go | 4 years ago | |
document.go | 5 months ago | |
document_test.go | 5 months ago | |
emacs.go | 5 months ago | |
emacs_test.go | 4 years ago | |
filter.go | 2 years ago | |
filter_test.go | 4 years ago | |
go.mod | 3 weeks ago | |
go.sum | 3 weeks ago | |
history.go | 4 years ago | |
history_test.go | 5 years ago | |
input.go | 4 years ago | |
input_posix.go | 5 months ago | |
input_test.go | 4 years ago | |
input_windows.go | 4 years ago | |
key.go | 4 years ago | |
key_bind.go | 4 years ago | |
key_bind_func.go | 4 years ago | |
key_string.go | 4 years ago | |
option.go | 2 years ago | |
output.go | 4 years ago | |
output_posix.go | 4 years ago | |
output_vt100.go | 5 months ago | |
output_vt100_test.go | 4 years ago | |
output_windows.go | 2 years ago | |
prompt.go | 5 months ago | |
render.go | 5 months ago | |
render_test.go | 2 years ago | |
shortcut.go | 2 years ago | |
signal_posix.go | 5 months ago | |
signal_windows.go | 5 months ago |
README.md
go-prompt
A library for building powerful interactive prompts inspired by python-prompt-toolkit, making it easier to build cross-platform command line tools using Go.
package main
import (
"fmt"
"git.tcp.direct/tcp.direct/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)
}
Projects using go-prompt
- c-bata/kube-prompt : An interactive kubernetes client featuring auto-complete written in Go.
- rancher/cli : The Rancher Command Line Interface (CLI)is a unified tool to manage your Rancher server
- kubicorn/kubicorn : Simple, cloud native infrastructure for Kubernetes.
- cch123/asm-cli : Interactive shell of assembly language(X86/X64) based on unicorn and rasm2
- ktr0731/evans : more expressive universal gRPC client
- CrushedPixel/moshpit: A Command-line tool for datamoshing.
- last-ent/testy-go: Testy Go: A tool for easy testing!
- tiagorlampert/CHAOS: a PoC that allow generate payloads and control remote operating systems.
- 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.
- takashabe/btcli: btcli is a CLI client for the Bigtable. Has many read options and auto-completion.
- ysn2233/kafka-prompt: An interactive kafka-prompt(kafka-shell) built on existing kafka command client
- fishi0x01/vsh: HashiCorp Vault interactive shell
- mstrYoda/docker-shell: A simple interactive prompt for docker
- c-bata/gh-prompt: An interactive GitHub CLI featuring auto-complete.
- 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)
- rueyaa332266/ezcron: Ezcron is a CLI tool, helping you deal with cron expression easier.
- qingstor/qsctl: Advanced command line tool for QingStor Object Storage.
- segmentio/topicctl: Tool for declarative management of Kafka topics
- chriswalz/bit: Bit is a modern Git CLI
- (If you create a CLI utility using go-prompt and want your own project to be listed here, please submit a GitHub issue.)
Features
Powerful auto-completion
(This is a GIF animation of kube-prompt.)
Flexible options
go-prompt provides many options. Please check option section of GoDoc for more details.
Keyboard Shortcuts
Emacs-like keyboard shortcuts are available by default (these also are the default shortcuts in Bash shell). You can customize and expand these shortcuts.
Key Binding | Description |
---|---|
Ctrl + A | Go to the beginning of the line (Home) |
Ctrl + E | Go to the end of the line (End) |
Ctrl + P | Previous command (Up arrow) |
Ctrl + N | Next command (Down arrow) |
Ctrl + F | Forward one character |
Ctrl + B | Backward one character |
Ctrl + D | Delete character under the cursor |
Ctrl + H | Delete character before the cursor (Backspace) |
Ctrl + W | Cut the word before the cursor to the clipboard |
Ctrl + K | Cut the line after the cursor to the clipboard |
Ctrl + U | Cut the line before the cursor to the clipboard |
Ctrl + L | Clear the screen |
History
You can use Up arrow and Down arrow to walk through the history of commands executed.
Multiple platform support
We have confirmed go-prompt works fine in the following terminals:
- iTerm2 (macOS)
- Terminal.app (macOS)
- Command Prompt (Windows)
- gnome-terminal (Ubuntu)
Links
Author
Masashi Shibata
License
This software is licensed under the MIT license, see LICENSE for more information.