422 lines
29 KiB
Markdown
422 lines
29 KiB
Markdown
---
|
|
obj: application
|
|
repo: https://github.com/charmbracelet/gum
|
|
rev: 2024-03-27
|
|
---
|
|
|
|
# gum
|
|
Gum provides highly configurable, ready-to-use utilities to help you write useful [shell](Shell.md) scripts and dotfiles aliases with just a few lines of code.
|
|
|
|
![Gum](./gum.avif)
|
|
|
|
## Usage
|
|
**Example:**
|
|
```shell
|
|
#!/bin/sh
|
|
TYPE=$(gum choose "fix" "feat" "docs" "style" "refactor" "test" "chore" "revert")
|
|
SCOPE=$(gum input --placeholder "scope")
|
|
|
|
# Since the scope is optional, wrap it in parentheses if it has a value.
|
|
test -n "$SCOPE" && SCOPE="($SCOPE)"
|
|
|
|
# Pre-populate the input with the type(scope): so that the user may change it
|
|
SUMMARY=$(gum input --value "$TYPE$SCOPE: " --placeholder "Summary of this change")
|
|
DESCRIPTION=$(gum write --placeholder "Details of this change (CTRL+D to finish)")
|
|
|
|
# Commit these changes
|
|
gum confirm "Commit changes?" && git commit -m "$SUMMARY" -m "$DESCRIPTION"
|
|
```
|
|
|
|
### gum choose
|
|
Choose an option from a list of choices
|
|
Usage: `gum choose [<options> ...]`
|
|
|
|
| Option | Environment Variable | Description |
|
|
| ----------------------------- | --------------------------------- | -------------------------------------------------------------- |
|
|
| `--ordered` | `$GUM_CHOOSE_ORDERED` | Maintain the order of the selected options |
|
|
| `--height=10` | `$GUM_CHOOSE_HEIGHT` | Height of the list |
|
|
| `--cursor="> "` | `$GUM_CHOOSE_CURSOR` | Prefix to show on item that corresponds to the cursor position |
|
|
| `--header=""` | `$GUM_CHOOSE_HEADER` | Header value |
|
|
| `--cursor-prefix="○ "` | `$GUM_CHOOSE_CURSOR_PREFIX` | Prefix to show on the cursor item (hidden if limit is 1) |
|
|
| `--selected-prefix="◉ "` | `$GUM_CHOOSE_SELECTED_PREFIX` | Prefix to show on selected items (hidden if limit is 1) |
|
|
| `--unselected-prefix="○ "` | `$GUM_CHOOSE_UNSELECTED_PREFIX` | Prefix to show on unselected items (hidden if limit is 1) |
|
|
| `--selected=,...` | `$GUM_CHOOSE_SELECTED` | Options that should start as selected |
|
|
| `--timeout=0` | `$GUM_CCHOOSE_TIMEOUT` | Timeout until choose returns selected element |
|
|
| `--limit=1` | - | Maximum number of options to pick |
|
|
| `--no-limit` | - | Pick unlimited number of options (ignores limit) |
|
|
| `--select-if-one` | - | Select the given option if there is only one |
|
|
| `--cursor.foreground="212"` | `$GUM_CHOOSE_CURSOR_FOREGROUND` | Foreground Color |
|
|
| `--header.foreground="240"` | `$GUM_CHOOSE_HEADER_FOREGROUND` | Foreground Color |
|
|
| `--item.foreground=""` | `$GUM_CHOOSE_ITEM_FOREGROUND` | Foreground Color |
|
|
| `--selected.foreground="212"` | `$GUM_CHOOSE_SELECTED_FOREGROUND` | Foreground Color |
|
|
|
|
**Example**:
|
|
Choose an option from a list of choices.
|
|
```shell
|
|
echo "Pick a card, any card..."
|
|
CARD=$(gum choose --height 15 {{A,K,Q,J},{10..2}}" "{♠,♥,♣,♦})
|
|
echo "Was your card the $CARD?"
|
|
```
|
|
|
|
### gum confirm
|
|
Ask a user to confirm an action
|
|
Usage: `gum confirm [<prompt>]`
|
|
|
|
| Option | Environment Variable | Description |
|
|
| ------------------------------- | ------------------------------------ | ------------------------------------------------------------------- |
|
|
| `--default` | - | Default confirmation action |
|
|
| `--affirmative="Yes"` | - | The title of the affirmative action |
|
|
| `--negative="No"` | - | The title of the negative action |
|
|
| `--timeout=0` | `$GUM_CONFIRM_TIMEOUT` | Timeout until confirm returns selected value or default if provided |
|
|
| `--prompt.foreground=""` | `$GUM_CONFIRM_PROMPT_FOREGROUND` | Foreground Color |
|
|
| `--selected.foreground="230"` | `$GUM_CONFIRM_SELECTED_FOREGROUND` | Foreground Color |
|
|
| `--unselected.foreground="254"` | `$GUM_CONFIRM_UNSELECTED_FOREGROUND` | Foreground Color |
|
|
|
|
**Example**:
|
|
Confirm whether to perform an action. Exits with code 0 (affirmative) or 1 (negative) depending on selection.
|
|
```shell
|
|
gum confirm && rm file.txt || echo "File not removed"
|
|
```
|
|
|
|
### gum file
|
|
Pick a file from a folder
|
|
Usage: `gum file [<path>]`
|
|
|
|
| Option | Environment Variable | Description |
|
|
| -------------------------------- | ---------------------------------- | ------------------------------------------------ |
|
|
| `[<path>]` | `$GUM_FILE_PATH` | The path to the folder to begin traversing |
|
|
| `-c, --cursor=">"` | `$GUM_FILE_CURSOR` | The cursor character |
|
|
| `-a, --all` | `$GUM_FILE_ALL` | Show hidden and 'dot' files |
|
|
| `--file` | `$GUM_FILE_FILE` | Allow files selection |
|
|
| `--directory` | `$GUM_FILE_DIRECTORY` | Allow directories selection |
|
|
| `--height=0` | `$GUM_FILE_HEIGHT` | Maximum number of files to display |
|
|
| `--timeout=0` | `$GUM_FILE_TIMEOUT` | Timeout until command aborts without a selection |
|
|
| `--cursor.foreground="212"` | `$GUM_FILE_CURSOR_FOREGROUND` | Foreground Color |
|
|
| `--symlink.foreground="36"` | `$GUM_FILE_SYMLINK_FOREGROUND` | Foreground Color |
|
|
| `--directory.foreground="99"` | `$GUM_FILE_DIRECTORY_FOREGROUND` | Foreground Color |
|
|
| `--file.foreground="" ` | `$GUM_FILE_FILE_FOREGROUND` | Foreground Color |
|
|
| `--permissions.foreground="244"` | `$GUM_FILE_PERMISSIONS_FOREGROUND` | Foreground Color |
|
|
| `--selected.foreground="212"` | `$GUM_FILE_SELECTED_FOREGROUND` | Foreground Color |
|
|
| `--file-size.foreground="240"` | `$GUM_FILE_FILE_SIZE_FOREGROUND` | Foreground Color |
|
|
|
|
**Example**:
|
|
Prompt the user to select a file from the file tree.
|
|
```shell
|
|
EDITOR $(gum file $HOME)
|
|
```
|
|
|
|
### gum filter
|
|
Filter items from a list
|
|
Usage: `gum filter [<options> ...]`
|
|
|
|
| Option | Environment Variable | Description |
|
|
| --------------------------------------- | ------------------------------------------ | ------------------------------------------------------------- |
|
|
| `--indicator="•`" | `$GUM_FILTER_INDICATOR` | Character for selection |
|
|
| `--selected-prefix=" ◉ "` | `$GUM_FILTER_SELECTED_PREFIX` | Character to indicate selected items (hidden if limit is 1) |
|
|
| `--unselected-prefix=" ○ "` | `$GUM_FILTER_UNSELECTED_PREFIX` | Character to indicate unselected items (hidden if limit is 1) |
|
|
| `--header=""` | `$GUM_FILTER_HEADER` | Header value |
|
|
| `--placeholder="Filter..."` | `$GUM_FILTER_PLACEHOLDER` | Placeholder value |
|
|
| `--prompt="> "` | `$GUM_FILTER_PROMPT` | Prompt to display |
|
|
| `--width=20` | `$GUM_FILTER_WIDTH` | Input width |
|
|
| `--height=0` | `$GUM_FILTER_HEIGHT` | Input height |
|
|
| `--value=""` | `$GUM_FILTER_VALUE` | Initial filter value |
|
|
| `--reverse` | `$GUM_FILTER_REVERSE` | Display from the bottom of the screen |
|
|
| `--[no-]fuzzy` | `$GUM_FILTER_FUZZY` | Enable fuzzy matching |
|
|
| `--[no-]sort` | `$GUM_FILTER_SORT` | Sort the results |
|
|
| `--timeout=0` | `$GUM_FILTER_TIMEOUT` | Timeout until filter command aborts |
|
|
| `--indicator.foreground="212"` | `$GUM_FILTER_INDICATOR_FOREGROUND` | Foreground Color |
|
|
| `--selected-indicator.foreground="212"` | `$GUM_FILTER_SELECTED_PREFIX_FOREGROUND` | Foreground Color |
|
|
| `--unselected-prefix.foreground="240"` | `$GUM_FILTER_UNSELECTED_PREFIX_FOREGROUND` | Foreground Color |
|
|
| `--header.foreground="240"` | `$GUM_FILTER_HEADER_FOREGROUND` | Foreground Color |
|
|
| `--text.foreground=""` | `$GUM_FILTER_TEXT_FOREGROUND` | Foreground Color |
|
|
| `--cursor-text.foreground=""` | `$GUM_FILTER_CURSOR_TEXT_FOREGROUND` | Foreground Color |
|
|
| `--match.foreground="212"` | `$GUM_FILTER_MATCH_FOREGROUND` | Foreground Color |
|
|
| `--prompt.foreground="240"` | `$GUM_FILTER_PROMPT_FOREGROUND` | Foreground Color |
|
|
| `--limit=1` | - | Maximum number of options to pick |
|
|
| `--no-limit` | - | Pick unlimited number of options (ignores limit) |
|
|
| `--select-if-one` | - | Select the given option if there is only one |
|
|
| `--[no-]strict` | - | Only returns if anything matched. Otherwise return Filter |
|
|
|
|
**Example**:
|
|
Use fuzzy matching to filter a list of values:
|
|
```shell
|
|
echo Strawberry >> flavors.txt
|
|
echo Banana >> flavors.txt
|
|
echo Cherry >> flavors.txt
|
|
cat flavors.txt | gum filter > selection.txt
|
|
```
|
|
|
|
### gum format
|
|
Format a string using a template
|
|
Usage: `gum format [<template> ...]`
|
|
|
|
| Option | Environment Variable | Description |
|
|
| ----------------------- | ---------------------- | ----------------------------------------------------------------------- |
|
|
| `[<template> ...]` | - | Template string to format (can also be provided via stdin) |
|
|
| `--theme="pink"` | `$GUM_FORMAT_THEME` | Glamour theme to use for [markdown](../../files/Markdown.md) formatting |
|
|
| `-l, --language="" ` | `$GUM_FORMAT_LANGUAGE` | Programming language to parse code |
|
|
| `-t, --type="markdown"` | `$GUM_FORMAT_TYPE` | Format to use (`markdown`, `template`, `code`, `emoji`) |
|
|
|
|
**Example**:
|
|
format processes and formats bodies of text. `gum format` can parse [markdown](../../files/Markdown.md), template strings, and named emojis.
|
|
```shell
|
|
# Format some markdown
|
|
gum format -- "# Gum Formats" "- Markdown" "- Code" "- Template" "- Emoji"
|
|
echo "# Gum Formats\n- Markdown\n- Code\n- Template\n- Emoji" | gum format
|
|
|
|
# Syntax highlight some code
|
|
cat main.go | gum format -t code
|
|
|
|
# Render text any way you want with templates
|
|
echo '{{ Bold "Tasty" }} {{ Italic "Bubble" }} {{ Color "99" "0" " Gum " }}' \
|
|
| gum format -t template
|
|
|
|
# Display your favorite emojis!
|
|
echo 'I :heart: Bubble Gum :candy:' | gum format -t emoji
|
|
```
|
|
|
|
### gum input
|
|
Prompt for some input
|
|
Usage: `gum input`
|
|
|
|
| Option | Environment Variable | Description |
|
|
| ----------------------------------- | ------------------------------ | -------------------------------------------- |
|
|
| `--placeholder="Type something..."` | `$GUM_INPUT_PLACEHOLDER` | Placeholder value |
|
|
| `--prompt="> "` | `$GUM_INPUT_PROMPT` | Prompt to display |
|
|
| `--cursor.mode="blink"` | `$GUM_INPUT_CURSOR_MODE` | Cursor mode |
|
|
| `--value=""` | - | Initial value (can also be passed via stdin) |
|
|
| `--char-limit=400` | - | Maximum value length (0 for no limit) |
|
|
| `--width=40` | `$GUM_INPUT_WIDTH` | Input width (0 for terminal width) |
|
|
| `--password` | - | Mask input characters |
|
|
| `--header=""` | `$GUM_INPUT_HEADER` | Header value |
|
|
| `--timeout=0` | `$GUM_INPUT_TIMEOUT` | Timeout until input aborts |
|
|
| `--prompt.foreground=""` | `$GUM_INPUT_PROMPT_FOREGROUND` | Foreground Color |
|
|
| `--cursor.foreground="212"` | `$GUM_INPUT_CURSOR_FOREGROUND` | Foreground Color |
|
|
| `--header.foreground="240"` | `$GUM_INPUT_HEADER_FOREGROUND` | Foreground Color |
|
|
|
|
**Example**:
|
|
Prompt for input with a simple command.
|
|
```shell
|
|
gum input > answer.txt
|
|
```
|
|
|
|
Prompt for sensitive input with the --password flag.
|
|
```shell
|
|
gum input --password > password.txt
|
|
```
|
|
|
|
### gum join
|
|
Join text vertically or horizontally
|
|
Usage: `gum join <text> ...`
|
|
|
|
| Option | Description |
|
|
| ---------------- | -------------------------------------------------- |
|
|
| `--align="left"` | Text alignment |
|
|
| `--horizontal` | Join (potentially multi-line) strings horizontally |
|
|
| `--vertical` | Join (potentially multi-line) strings vertically |
|
|
|
|
**Example**:
|
|
Combine text vertically or horizontally. Use this command with `gum style` to build layouts and pretty output.
|
|
|
|
> Tip: Always wrap the output of `gum style` in quotes to preserve newlines (`\n`) when using it as an argument in the join command.
|
|
|
|
```shell
|
|
I=$(gum style --padding "1 5" --border double --border-foreground 212 "I")
|
|
LOVE=$(gum style --padding "1 4" --border double --border-foreground 57 "LOVE")
|
|
BUBBLE=$(gum style --padding "1 8" --border double --border-foreground 255 "Bubble")
|
|
GUM=$(gum style --padding "1 5" --border double --border-foreground 240 "Gum")
|
|
|
|
I_LOVE=$(gum join "$I" "$LOVE")
|
|
BUBBLE_GUM=$(gum join "$BUBBLE" "$GUM")
|
|
gum join --align center --vertical "$I_LOVE" "$BUBBLE_GUM"
|
|
```
|
|
|
|
### gum pager
|
|
Scroll through a file
|
|
Usage: `gum pager [<content>]`
|
|
|
|
| Option | Environment Variable | Description |
|
|
| ------------------------------------ | ----------------------------------- | --------------------------- |
|
|
| `--show-line-numbers` | - | Show line numbers |
|
|
| `--soft-wrap` | - | Soft wrap lines |
|
|
| `--timeout=0` | `$GUM_PAGER_TIMEOUT` | Timeout until command exits |
|
|
| `--foreground=""` | `$GUM_PAGER_FOREGROUND` | Foreground Color |
|
|
| `--help.foreground="241"` | `$GUM_PAGER_HELP_FOREGROUND` | Foreground Color |
|
|
| `--line-number.foreground="237"` | `$GUM_PAGER_LINE_NUMBER_FOREGROUND` | Foreground Color |
|
|
| `--match.foreground="212"` | `$GUM_PAGER_MATCH_FOREGROUND` | Foreground Color |
|
|
| `--match-highlight.foreground="235"` | `$GUM_PAGER_MATCH_HIGH_FOREGROUND` | Foreground Color |
|
|
|
|
**Example**:
|
|
Scroll through a long document with line numbers and a fully customizable viewport.
|
|
```shell
|
|
gum pager < README.md
|
|
```
|
|
|
|
### gum spin
|
|
Display spinner while running a command
|
|
Usage: `gum spin <command> ...`
|
|
|
|
| Option | Environment Variable | Description |
|
|
| ---------------------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
| `--show-output` | `$GUM_SPIN_SHOW_OUTPUT` | Show or pipe output of command during execution |
|
|
| `-s, --spinner="dot"` | `$GUM_SPIN_SPINNER` | Spinner type. Available spinner types include: `line`, `dot`, `minidot`, `jump`, `pulse`, `points`, `globe`, `moon`, `monkey`, `meter`, `hamburger`. |
|
|
| `--title="Loading..."` | `$GUM_SPIN_TITLE` | Text to display to user while spinning |
|
|
| `-a, --align="left"` | `$GUM_SPIN_ALIGN` | Alignment of spinner with regard to the title |
|
|
| `--timeout=0` | `$GUM_SPIN_TIMEOUT` | Timeout until spin command aborts |
|
|
| `--spinner.foreground="212"` | `$GUM_SPIN_SPINNER_FOREGROUND` | Foreground Color |
|
|
| `--title.foreground=""` | `$GUM_SPIN_TITLE_FOREGROUND` | Foreground Color |
|
|
|
|
**Example**:
|
|
To view or pipe the command's output, use the `--show-output` flag.
|
|
```shell
|
|
gum spin --spinner dot --title "Buying Bubble Gum..." -- sleep 5
|
|
```
|
|
|
|
### gum style
|
|
Apply coloring, borders, spacing to text
|
|
Usage: `gum style [<text> ...]`
|
|
|
|
| Option | Environment Variable | Description |
|
|
| ------------------------ | -------------------- | ----------------------- |
|
|
| `--foreground=""` | `$FOREGROUND` | Foreground Color |
|
|
| `--background=""` | `$BACKGROUND` | Background Color |
|
|
| `--border="none"` | `$BORDER` | Border Style |
|
|
| `--border-background=""` | `$BORDER_BACKGROUND` | Border Background Color |
|
|
| `--border-foreground=""` | `$BORDER_FOREGROUND` | Border Foreground Color |
|
|
| `--align="left"` | `$ALIGN` | Text Alignment |
|
|
| `--height=0` | `$HEIGHT` | Text height |
|
|
| `--width=0` | `$WIDTH` | Text width |
|
|
| `--margin="0 0"` | `$MARGIN` | Text margin |
|
|
| `--padding="0 0"` | `$PADDING` | Text padding |
|
|
| `--bold` | `$BOLD` | Bold text |
|
|
| `--faint` | `$FAINT` | Faint text |
|
|
| `--italic` | `$ITALIC` | Italicize text |
|
|
| `--strikethrough` | `$STRIKETHROUGH` | Strikethrough text |
|
|
| `--underline` | `$UNDERLINE` | Underline text |
|
|
|
|
**Example**:
|
|
Pretty print any string with any layout with one command.
|
|
```shell
|
|
gum style \
|
|
--foreground 212 --border-foreground 212 --border double \
|
|
--align center --width 50 --margin "1 2" --padding "2 4" \
|
|
'Bubble Gum (1¢)' 'So sweet and so fresh!'
|
|
```
|
|
|
|
### gum table
|
|
Render a table of data
|
|
Usage: `gum table`
|
|
|
|
| Option | Environment Variable | Description |
|
|
| ----------------------------- | -------------------------------- | ---------------- |
|
|
| `-s, --separator=","` | - | Row separator |
|
|
| `-c, --columns=COLUMNS,...` | - | Column names |
|
|
| `-w, --widths=WIDTHS,...` | - | Column widths |
|
|
| `--height=10` | - | Table height |
|
|
| `-p, --print` | - | static print |
|
|
| `-f, --file=""` | - | file path |
|
|
| `-b, --border="rounded"` | - | border style |
|
|
| `--border.foreground=""` | `$GUM_TABLE_BORDER_FOREGROUND` | Foreground Color |
|
|
| `--cell.foreground=""` | `$GUM_TABLE_CELL_FOREGROUND` | Foreground Color |
|
|
| `--header.foreground=""` | `$GUM_TABLE_HEADER_FOREGROUND` | Foreground Color |
|
|
| `--selected.foreground="212"` | `$GUM_TABLE_SELECTED_FOREGROUND` | Foreground Color |
|
|
|
|
**Example**:
|
|
Select a row from some tabular data.
|
|
```shell
|
|
gum table < flavors.csv | cut -d ',' -f 1
|
|
```
|
|
|
|
### gum write
|
|
Prompt for long-form text
|
|
Usage: `gum write`
|
|
|
|
| Option | Environment Variable | Description |
|
|
| ------------------------------------- | ------------------------------------------ | --------------------------------------- |
|
|
| `--width=50` | `$GUM_WRITE_WIDTH` | Text area width (0 for terminal width) |
|
|
| `--height=5` | `$GUM_WRITE_HEIGHT` | Text area height |
|
|
| `--header=""` | `$GUM_WRITE_HEADER` | Header value |
|
|
| `--placeholder="Write something..."` | `$GUM_WRITE_PLACEHOLDER` | Placeholder value |
|
|
| `--prompt="┃ "` | `$GUM_WRITE_PROMPT` | Prompt to display |
|
|
| `--show-cursor-line` | `$GUM_WRITE_SHOW_CURSOR_LINE` | Show cursor line |
|
|
| `--show-line-numbers` | `$GUM_WRITE_SHOW_LINE_NUMBERS` | Show line numbers |
|
|
| `--value=""` | `$GUM_WRITE_VALUE` | Initial value (can be passed via stdin) |
|
|
| `--char-limit=400` | - | Maximum value length (0 for no limit) |
|
|
| `--cursor.mode="blink"` | `$GUM_WRITE_CURSOR_MODE` | Cursor mode |
|
|
| `--base.foreground=""` | `$GUM_WRITE_BASE_FOREGROUND` | Foreground Color |
|
|
| `--cursor-line-number.foreground="7"` | `$GUM_WRITE_CURSOR_LINE_NUMBER_FOREGROUND` | Foreground Color |
|
|
| `--cursor-line.foreground=""` | `$GUM_WRITE_CURSOR_LINE_FOREGROUND` | Foreground Color |
|
|
| `--cursor.foreground="212"` | `$GUM_WRITE_CURSOR_FOREGROUND` | Foreground Color |
|
|
| `--end-of-buffer.foreground="0"` | `$GUM_WRITE_END_OF_BUFFER_FOREGROUND` | Foreground Color |
|
|
| `--line-number.foreground="7"` | `$GUM_WRITE_LINE_NUMBER_FOREGROUND` | Foreground Color |
|
|
| `--header.foreground="240"` | `$GUM_WRITE_HEADER_FOREGROUND` | Foreground Color |
|
|
| `--placeholder.foreground="240"` | `$GUM_WRITE_PLACEHOLDER_FOREGROUND` | Foreground Color |
|
|
| `--prompt.foreground="7"` | `$GUM_WRITE_PROMPT_FOREGROUND` | Foreground Color |
|
|
|
|
**Example**:
|
|
> Note: `CTRL+D` is used to complete text entry. `CTRL+C` and `esc` will cancel.
|
|
```shell
|
|
gum write > story.txt
|
|
```
|
|
|
|
### gum log
|
|
[Log](../../dev/Log.md) messages to output
|
|
Usage: `gum log <text> ...`
|
|
|
|
| Option | Environment Variable | Description |
|
|
| --------------------------- | ------------------------------- | ----------------------------------------------------------------------- |
|
|
| `-o, --file=STRING` | - | Log to file |
|
|
| `-f, --format` | - | Format message using printf |
|
|
| `--formatter="text"` | - | The log formatter to use |
|
|
| `-l, --level="none"` | - | The log level to use |
|
|
| `--prefix=STRING` | - | Prefix to print before the message |
|
|
| `-s, --structured` | - | Use structured logging |
|
|
| `-t, --time=""` | - | The time format to use (`kitchen`, `layout`, `ansic`, `rfc822`, etc...) |
|
|
| `--level.foreground=""` | `$GUM_LOG_LEVEL_FOREGROUND` | Foreground Color |
|
|
| `--time.foreground=""` | `$GUM_LOG_TIME_FOREGROUND` | Foreground Color |
|
|
| `--prefix.foreground=""` | `$GUM_LOG_PREFIX_FOREGROUND` | Foreground Color |
|
|
| `--message.foreground=""` | `$GUM_LOG_MESSAGE_FOREGROUND` | Foreground Color |
|
|
| `--key.foreground=""` | `$GUM_LOG_KEY_FOREGROUND` | Foreground Color |
|
|
| `--value.foreground=""` | `$GUM_LOG_VALUE_FOREGROUND` | Foreground Color |
|
|
| `--separator.foreground=""` | `$GUM_LOG_SEPARATOR_FOREGROUND` | Foreground Color |
|
|
|
|
**Example**:
|
|
`log` logs messages to the terminal at using different levels and styling using the charmbracelet/log library.
|
|
```shell
|
|
# Log some debug information.
|
|
gum log --structured --level debug "Creating file..." name file.txt
|
|
# DEBUG Unable to create file. name=temp.txt
|
|
|
|
# Log some error.
|
|
gum log --structured --level error "Unable to create file." name file.txt
|
|
# ERROR Unable to create file. name=temp.txt
|
|
|
|
# Include a timestamp.
|
|
gum log --time rfc822 --level error "Unable to create file."
|
|
```
|
|
|
|
## Examples
|
|
### Connect to a [TMUX](tmux.md) session
|
|
Pick from a running [tmux](tmux.md) session and attach to it. Or, if you're already in a [tmux](tmux.md) session, switch sessions.
|
|
```shell
|
|
SESSION=$(tmux list-sessions -F \#S | gum filter --placeholder "Pick session...")
|
|
tmux switch-client -t $SESSION || tmux attach -t $SESSION
|
|
```
|
|
|
|
### Pick commit hash from your [Git](../../dev/Git.md) history
|
|
Filter through your [git](../../dev/Git.md) history searching for commit messages, copying the commit hash of the commit you select.
|
|
```shell
|
|
git log --oneline | gum filter | cut -d' ' -f1 # | copy
|
|
```
|
|
|
|
### Choose packages to uninstall
|
|
List all packages installed by your package manager (we'll use [brew](../package%20managers/Brew.md)) and choose which packages to uninstall.
|
|
```shell
|
|
brew list | gum choose --no-limit | xargs brew uninstall
|
|
```
|
|
|
|
### Choose branches to delete
|
|
List all branches and choose which branches to delete.
|
|
```shell
|
|
git branch | cut -c 3- | gum choose --no-limit | xargs git branch -D
|
|
```
|