bash-tui-toolkit

Prompts

Inquirer.js inspired prompts

Overview

Prompt for text

Index

input

Prompt for text

Example

# Raw input without validation
text=$(input "Please enter something and confirm with enter")
# Input with validation
text=$(with_validate 'input "Please enter at least one character and confirm with enter"' validate_present)

Arguments

Output on stdout

confirm

Show confirm dialog for yes/no

Example

confirmed=$(confirm "Should it be?")
if [ "$confirmed" = "0" ]; then echo "No?"; else echo "Yes!"; fi

Arguments

Output on stdout

list

Renders a text based list of options that can be selected by the user using up, down and enter keys and returns the chosen option. Inspired by https://unix.stackexchange.com/questions/146570/arrow-key-enter-menu/415155#415155

Example

options=("one" "two" "three" "four")
option=$(list "Select one item" "${options[@]}")
echo "Your choice: ${options[$option]}"

Arguments

Output on stdout

checkbox

Render a text based list of options, where multiple can be selected by the user using up, down and enter keys and returns the chosen option. Inspired by https://unix.stackexchange.com/questions/146570/arrow-key-enter-menu/415155#415155

Example

options=("one" "two" "three" "four")
checked=$(checkbox "Select one or more items" "${options[@]}")
echo "Your choices: ${checked}"

Arguments

Output on stdout

password

Show password prompt displaying stars for each password character letter typed it also allows deleting input

Example

# Password prompt with custom validation
validate_password() { if [ ${#1} -lt 10 ];then echo "Password needs to be at least 10 characters"; exit 1; fi }
pass=$(with_validate 'password "Enter random password"' validate_password)
# Password ith no validation
pass=$(password "Enter password to use")

Arguments

Output on stdout

editor

Open default editor ($EDITOR) if none is set falls back to vi

Example

# Open default editor
text=$(editor "Please enter something in the editor")
echo -e "You wrote:\n${text}"

Arguments

Output on stdout

with_validate

Evaluate prompt command with validation, this prompts the user for input till the validation function returns with 0

Example

# Using builtin is present validator
text=$(with_validate 'input "Please enter something and confirm with enter"' validate_present)
# Using custom validator e.g. for password
validate_password() { if [ ${#1} -lt 10 ];then echo "Password needs to be at least 10 characters"; exit 1; fi }
pass=$(with_validate 'password "Enter random password"' validate_password)

Arguments

Output on stdout

range

Display a range dialog that can incremented and decremented using the arrow keys

Example

# Range with negative min value
value=$(range -5 0 5)

Arguments

Output on stdout

validate_present

Validate a prompt returned any value

Example

# text input with validation
text=$(with_validate 'input "Please enter something and confirm with enter"' validate_present)

Arguments

Exit codes

Output on stdout