Categorygithub.com/c-bata/go-prompt
modulepackage
0.2.6
Repository: https://github.com/c-bata/go-prompt.git
Documentation: pkg.go.dev

# README

go-prompt

Go Report Card Software License GoDoc tests

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"
	"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)
}

Projects using go-prompt

Features

Powerful auto-completion

demo

(This is a GIF animation of kube-prompt.)

Flexible options

go-prompt provides many options. Please check option section of GoDoc for more details.

options

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.

keyboard shortcuts

Key BindingDescription
Ctrl + AGo to the beginning of the line (Home)
Ctrl + EGo to the end of the line (End)
Ctrl + PPrevious command (Up arrow)
Ctrl + NNext command (Down arrow)
Ctrl + FForward one character
Ctrl + BBackward one character
Ctrl + DDelete character under the cursor
Ctrl + HDelete character before the cursor (Backspace)
Ctrl + WCut the word before the cursor to the clipboard
Ctrl + KCut the line after the cursor to the clipboard
Ctrl + UCut the line before the cursor to the clipboard
Ctrl + LClear the screen

History

You can use Up arrow and Down arrow to walk through the history of commands executed.

History

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.

# Packages

# Functions

Choose to the shortcut of input function to select from string array.
DeleteBeforeChar Go to Backspace.
DeleteChar Delete character under the cursor.
DeleteWord Delete word before the cursor.
FilterContains checks whether the completion.Text contains sub.
FilterFuzzy checks whether the completion.Text fuzzy matches sub.
FilterHasPrefix checks whether the string completions.Text begins with sub.
FilterHasSuffix checks whether the completion.Text ends with sub.
GetKey returns Key correspond to input byte codes.
GoLeftChar Backward one character.
GoLeftWord Backward one word.
GoLineBeginning Go to the beginning of the line.
GoLineEnd Go to the End of the line.
GoRightChar Forward one character.
GoRightWord Forward one word.
Input get the input data from the user and return it.
New returns a Prompt with powerful auto-completion.
NewBuffer is constructor of Buffer struct.
NewCompletionManager returns initialized CompletionManager object.
NewDocument return the new empty document.
NewHistory returns new history object.
NewStandardInputParser returns ConsoleParser object to read from stdin.
NewStderrWriter returns ConsoleWriter object to write to stderr.
NewStdoutWriter returns ConsoleWriter object to write to stdout.
OptionAddASCIICodeBind to set a custom key bind.
OptionAddKeyBind to set a custom key bind.
OptionBreakLineCallback to run a callback at every break line.
OptionCompletionOnDown allows for Down arrow key to trigger completion.
OptionCompletionWordSeparator to set word separators.
OptionDescriptionBGColor to change a background color of description text in drop down suggestions.
OptionDescriptionTextColor to change a background color of description text in drop down suggestions.
OptionHistory to set history expressed by string array.
OptionInitialBufferText to set the initial buffer text.
OptionInputBGColor to change a color of background which is input by user.
OptionInputTextColor to change a color of text which is input by user.
OptionLivePrefix to change the prefix dynamically by callback function.
OptionMaxSuggestion specify the max number of displayed suggestions.
OptionParser to set a custom ConsoleParser object.
OptionPrefix to set prefix string.
OptionPrefixBackgroundColor to change a background color of prefix string.
OptionPrefixTextColor change a text color of prefix string.
OptionPreviewSuggestionBGColor to change a background color which is completed.
OptionPreviewSuggestionTextColor to change a text color which is completed.
OptionScrollbarBGColor to change a background color of scrollbar.
OptionScrollbarThumbColor to change a thumb color on scrollbar.
OptionSelectedDescriptionBGColor to change a background color of description which is selected inside suggestions drop down box.
OptionSelectedDescriptionTextColor to change a text color of description which is selected inside suggestions drop down box.
OptionSelectedSuggestionBGColor to change a background color for completed text which is selected inside suggestions drop down box.
OptionSelectedSuggestionTextColor to change a text color for completed text which is selected inside suggestions drop down box.
OptionSetExitCheckerOnInput set an exit function which checks if go-prompt exits its Run loop.
OptionShowCompletionAtStart to set completion window is open at start.
OptionSuggestionBGColor change a background color in drop down suggestions.
OptionSuggestionTextColor to change a text color in drop down suggestions.
OptionSwitchKeyBindMode set a key bind mode.
OptionTitle to set title displayed at the header bar of terminal.
OptionWriter to set a custom ConsoleWriter object.

# Constants

Matches any key.
Black represents a black.
Blue represents a blue.
Brown represents a brown.
CommonKeyBind is a mode without any keyboard shortcut.
Special.
Cyan represents a cyan.
DarkBlue represents a dark blue.
DarkGray represents a dark gray.
DarkGreen represents a dark green.
DarkRed represents a dark red.
DefaultColor represents a default color.
DisplayBlink set blink (less than 150 per minute).
DisplayBold set bold or increases intensity.
DisplayCrossedOut set characters legible, but marked for deletion.
DisplayDefaultFont set primary(default) font.
DisplayInvisible set invisible.
DisplayItalic set italic.
DisplayLowIntensity decreases intensity.
DisplayRapidBlink set blink (more than 150 per minute).
DisplayReset reset all display attributes.
DisplayReverse swap foreground and background colors.
DisplayUnderline set underline.
EmacsKeyBind is a mode to use emacs-like keyboard shortcut.
Fuchsia represents a fuchsia.
Green represents a green.
Key which is ignored.
LightGray represents a light gray.
Key is not defined.
Purple represents a purple.
Red represents a red.
Aliases.
Turquoise represents a turquoise.
White represents a white.
Yellow represents a yellow.

# Variables

ASCIISequences holds mappings of the key and byte array.
NewStandardOutputWriter returns ConsoleWriter object to write to stdout.
SwitchKeyBindMode to set a key bind mode.

# Structs

ASCIICode is the type contains Key and it's ascii byte array.
ASCIICodeBind represents which []byte should do what operation.
Buffer emulates the console buffer.
CompletionManager manages which suggestion is now selected.
Document has text displayed in terminal and cursor position.
Exec is the struct contains user input context.
History stores the texts that are entered.
KeyBind represents which key should do what operation.
PosixParser is a ConsoleParser implementation for POSIX environment.
PosixWriter is a ConsoleWriter implementation for POSIX environment.
Prompt is core struct of go-prompt.
Render to render prompt information from state of Buffer.
Suggest is printed when completing.
VT100Writer generates VT100 escape sequences.
WinSize represents the width and height of terminal.

# Interfaces

ConsoleParser is an interface to abstract input layer.
ConsoleWriter is an interface to abstract output layer.

# Type aliases

Color represents color on terminal.
Completer should return the suggest item from Document.
DisplayAttribute represents display attributes like Blinking, Bold, Italic and so on.
Executor is called when user input something text.
ExitChecker is called after user input to check if prompt must stop and exit go-prompt Run loop.
Filter is the type to filter the prompt.Suggestion array.
Key is the type express the key inserted from user.go:generate stringer -type=Key.
KeyBindFunc receives buffer and processed it.
KeyBindMode to switch a key binding flexibly.
Option is the type to replace default parameters.