gum/README.md
2022-07-07 23:21:33 -04:00

3.8 KiB
Raw Blame History

Gum

Gum is a collection of command-line utilities that make your shell scripts a little more glamorous. It gives you the power of Bubbles and Lip Gloss without needing to write any Go code.

The following example is running from a single Bash script.

Shell running the Gum examples/demo.sh script

Interaction

Input

Prompt your users for input with a simple command.

gum input > answer.text

Write

Prompt your users to write some multi-line text.

gum write > story.text

Allow your users to filter through a list of options by fuzzy searching.

echo Strawberry >> flavors.text
echo Banana >> flavors.text
echo Cherry >> flavors.text
cat flavors.text | gum search > selection.text

Progress

Display a progress bar while loading. The following command will display a progress bar and increment the progress by 10% every 1 second. Thus, taking 10 seconds to complete the progress bar.

gum progress --increment 0.1 --interval 1s

Spinners

Display a spinner while taking some running action. We specify the command to run while showing the spinner, the spinner will automatically stop after the command exits.

gum spin --spinner dot --title "Buying Bubble Gum..." -- sleep 5

Styling and Layout

Style

Pretty print any string with any layout with one command.

gum style \
	--foreground "#FF06B7" --border "double" --align "center" \
	--width 50 --margin "1 2" --padding "2 4" \
	"Bubble Gum (1¢)" "So sweet and so fresh\!"
                                                        
  ╔══════════════════════════════════════════════════╗  
  ║                                                  ║  
  ║                                                  ║  
  ║                 Bubble Gum (1¢)                  ║  
  ║              So sweet and so fresh!              ║  
  ║                                                  ║  
  ║                                                  ║  
  ╚══════════════════════════════════════════════════╝  

Join

Combine text vertically or horizontally with a single command, use this command with gum style to build layouts and pretty output.

Note: It's important to wrap the output of gum style in quotes to ensure new lines (\n) are part of a single argument passed to the join command.

gum join "$(gum style --padding "1 5" --border double "I love Bubble Gum")" "$(gum style --padding "1 5" --border double "<3")"
╔═══════════════════════════╗╔════════════╗
║                           ║║            ║
║     I love Bubble Gum     ║║     <3     ║
║                           ║║            ║
╚═══════════════════════════╝╚════════════╝

Feedback

Wed love to hear your thoughts on this project. Feel free to drop us a note!

License

MIT

Part of Charm.

The Charm logo

Charm热爱开源 • Charm loves open source