Una herramienta para scripts de shell glamorosos. ¡Aprovecha el poder de Bubbles y Lip Gloss en tus guiones y alias sin escribir ningún código Go!
El ejemplo anterior se ejecuta desde un único script de shell (fuente).
Gum proporciona utilidades altamente configurables y listas para usar para ayudarlo a escribir scripts de shell útiles y alias de archivos de puntos con solo unas pocas líneas de código. Creemos un script simple para ayudarlo a escribir confirmaciones convencionales para sus archivos de puntos.
Pregunta por el tipo de commit con chicle elige:
gum choose " fix " " feat " " docs " " style " " refactor " " test " " chore " " revert "
Nota
Este comando se imprimirá en la salida estándar, lo cual no es tan útil. Para utilizar el comando más adelante, puede guardar la salida estándar en $VARIABLE
o file.txt
.
Solicite el alcance de estos cambios:
gum input --placeholder " scope "
Solicite el resumen y la descripción de los cambios:
gum input --value " $TYPE$SCOPE : " --placeholder " Summary of this change "
gum write --placeholder " Details of this change "
Confirme antes de comprometerse:
gum confirm " Commit changes? " && git commit -m " $SUMMARY " -m " $DESCRIPTION "
Consulte el ejemplo completo para combinar estos comandos en un solo script.
Utilice un administrador de paquetes:
# macOS or Linux
brew install gum
# Arch Linux (btw)
pacman -S gum
# Nix
nix-env -iA nixpkgs.gum
# Flox
flox install gum
# Windows (via WinGet or Scoop)
winget install charmbracelet.gum
scoop install charm-gum
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
echo " deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * * " | sudo tee /etc/apt/sources.list.d/charm.list
sudo apt update && sudo apt install gum
echo ' [charm]
name=Charm
baseurl=https://repo.charm.sh/yum/
enabled=1
gpgcheck=1
gpgkey=https://repo.charm.sh/yum/gpg.key ' | sudo tee /etc/yum.repos.d/charm.repo
sudo rpm --import https://repo.charm.sh/yum/gpg.key
# yum
sudo yum install gum
# zypper
sudo zypper refresh
sudo zypper install gum
O descargarlo:
O simplemente instálelo con go
:
go install github.com/charmbracelet/gum@latest
choose
: elija una opción de una lista de opcionesconfirm
: pedirle a un usuario que confirme una acciónfile
: elige un archivo de una carpetafilter
: Filtrar elementos de una listaformat
: formatea una cadena usando una plantillainput
: Solicitar alguna entradajoin
: unir texto vertical u horizontalmentepager
: desplazarse por un archivospin
: muestra el spinner mientras se ejecuta un comandostyle
: aplicar color, bordes y espaciado al textotable
: Representa una tabla de datoswrite
: Solicitar texto de formato largolog
: registrar mensajes para generar Puedes personalizar las opciones y estilos gum
con --flags
y $ENVIRONMENT_VARIABLES
. Consulte gum <command> --help
para obtener una vista completa de las opciones de personalización y configuración de cada comando.
Personalizar con --flags
:
gum input --cursor.foreground " #FF0 "
--prompt.foreground " #0FF "
--placeholder " What's up? "
--prompt " * "
--width 80
--value " Not much, hby? "
Personalizar con ENVIRONMENT_VARIABLES
:
export GUM_INPUT_CURSOR_FOREGROUND= " #FF0 "
export GUM_INPUT_PROMPT_FOREGROUND= " #0FF "
export GUM_INPUT_PLACEHOLDER= " What's up? "
export GUM_INPUT_PROMPT= " * "
export GUM_INPUT_WIDTH=80
# --flags can override values set with environment
gum input
Solicite información con un comando simple.
gum input > answer.txt
gum input --password > password.txt
Solicite texto de varias líneas ( ctrl+d
para completar la entrada de texto).
gum write > story.txt
Filtrar una lista de valores con coincidencia aproximada:
echo Strawberry >> flavors.txt
echo Banana >> flavors.txt
echo Cherry >> flavors.txt
gum filter < flavors.txt > selection.txt
Seleccione múltiples opciones con el indicador --limit
o --no-limit
. Utilice tab
o ctrl+space
para seleccionar, enter
para confirmar.
cat flavors.txt | gum filter --limit 2
cat flavors.txt | gum filter --no-limit
Elija una opción de una lista de opciones.
echo " Pick a card, any card... "
CARD= $( gum choose --height 15 {{A,K,Q,J},{10..2}} " " {♠,♥,♣,♦} )
echo " Was your card the $CARD ? "
También puede seleccionar varios elementos con el indicador --limit
o --no-limit
, que determina el máximo de elementos que se pueden elegir.
cat songs.txt | gum choose --limit 5
cat foods.txt | gum choose --no-limit --header " Grocery Shopping "
Confirme si desea realizar una acción. Sale con código 0
(afirmativo) o 1
(negativo) según selección.
gum confirm && rm file.txt || echo " File not removed "
Solicite al usuario que seleccione un archivo del árbol de archivos.
EDITOR $( gum file $HOME )
Desplácese por un documento extenso con números de línea y una ventana gráfica totalmente personalizable.
gum pager < README.md
Muestre una rueda giratoria mientras ejecuta un script o comando. La ruleta se detendrá automáticamente después de que salga el comando dado.
Para ver o canalizar la salida del comando, use el indicador --show-output
.
gum spin --spinner dot --title " Buying Bubble Gum... " -- sleep 5
Los tipos de hilanderos disponibles incluyen: line
, dot
, minidot
, jump
, pulse
, points
, globe
, moon
, monkey
, meter
, hamburger
.
Seleccione una fila de algunos datos tabulares.
gum table < flavors.csv | cut -d ' , ' -f 1
Imprima cualquier cadena con cualquier diseño con un solo comando.
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! '
Combina texto vertical u horizontalmente. Utilice este comando con gum style
para crear diseños y resultados bonitos.
Consejo: siempre incluya la salida del gum style
entre comillas para preservar las nuevas líneas ( n
) cuando lo use como argumento en el comando join
.
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 "
format
procesa y da formato a cuerpos de texto. gum format
puede analizar rebajas, cadenas de plantillas y emojis con nombre.
# Format some markdown
gum format -- " # Gum Formats " " - Markdown " " - Code " " - Template " " - Emoji "
echo " # Gum Formatsn- Markdownn- Coden- Templaten- 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
Para obtener más información sobre los asistentes de plantilla, consulte los documentos de Termenv. Para obtener una lista completa de emojis con nombre, consulte la API de GitHub.
log
registra mensajes en la terminal usando diferentes niveles y estilos usando la biblioteca charmbracelet/log
.
# 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. "
Consulte el paquete Go time
para conocer los formatos --time
aceptables.
Consulte charmbracelet/log
para obtener más uso.
Cómo utilizar gum
en sus flujos de trabajo diarios:
Consulte el directorio de ejemplos para conocer más casos de uso del mundo real.
git commit -m " $( gum input --width 50 --placeholder " Summary of changes " ) "
-m " $( gum write --width 80 --placeholder " Details of changes " ) "
$EDITOR
$EDITOR $( gum filter )
tmux
SESSION= $( tmux list-sessions -F # S | gum filter --placeholder " Pick session... " )
tmux switch-client -t $SESSION || tmux attach -t $SESSION
git
git log --oneline | gum filter | cut -d ' ' -f1 # | copy
skate
simple. skate list -k | gum filter | xargs skate get
brew list | gum choose --no-limit | xargs brew uninstall
git
git branch | cut -c 3- | gum choose --no-limit | xargs git branch -D
gh
gh pr list | cut -f1,2 | gum choose | cut -f1 | xargs gh pr checkout
gum filter < $HISTFILE --height 20
sudo
alias please= " gum input --password | sudo -nS "
Nos encantaría escuchar tu opinión sobre este proyecto. ¡No dudes en enviarnos una nota!
MIT
Parte del encanto.
Charm热爱开源 • Charm ama el código abierto