Alat untuk skrip shell yang glamor. Manfaatkan kekuatan Bubbles dan Lip Gloss dalam skrip dan alias Anda tanpa menulis kode Go apa pun!
Contoh di atas dijalankan dari satu skrip shell (sumber).
Gum menyediakan utilitas yang sangat dapat dikonfigurasi dan siap digunakan untuk membantu Anda menulis skrip shell dan alias dotfiles yang berguna hanya dengan beberapa baris kode. Mari buat skrip sederhana untuk membantu Anda menulis Komitmen Konvensional untuk dotfile Anda.
Mintalah tipe komit dengan gum pilih:
gum choose " fix " " feat " " docs " " style " " refactor " " test " " chore " " revert "
Catatan
Perintah ini sendiri akan mencetak ke stdout yang tidak terlalu berguna. Untuk menggunakan perintah nanti Anda dapat menyimpan stdout ke $VARIABLE
atau file.txt
.
Anjuran untuk cakupan perubahan ini:
gum input --placeholder " scope "
Prompt untuk ringkasan dan deskripsi perubahan:
gum input --value " $TYPE$SCOPE : " --placeholder " Summary of this change "
gum write --placeholder " Details of this change "
Konfirmasikan sebelum melakukan:
gum confirm " Commit changes? " && git commit -m " $SUMMARY " -m " $DESCRIPTION "
Lihat contoh lengkap untuk menggabungkan perintah-perintah ini dalam satu skrip.
Gunakan manajer paket:
# 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
Atau unduh:
Atau cukup instal dengan go
:
go install github.com/charmbracelet/gum@latest
choose
: Pilih opsi dari daftar pilihanconfirm
: Meminta pengguna untuk mengonfirmasi suatu tindakanfile
: Pilih file dari folderfilter
: Memfilter item dari daftarformat
: Memformat string menggunakan templatinput
: Meminta beberapa masukanjoin
: Menggabungkan teks secara vertikal atau horizontalpager
: Gulir ke seluruh filespin
: Menampilkan spinner saat menjalankan perintahstyle
: Menerapkan pewarnaan, batas, spasi pada tekstable
: Merender tabel datawrite
: Meminta teks berbentuk panjanglog
: Mencatat pesan ke output Anda dapat menyesuaikan opsi dan gaya gum
dengan --flags
dan $ENVIRONMENT_VARIABLES
. Lihat gum <command> --help
untuk tampilan lengkap opsi penyesuaian dan konfigurasi setiap perintah.
Sesuaikan dengan --flags
:
gum input --cursor.foreground " #FF0 "
--prompt.foreground " #0FF "
--placeholder " What's up? "
--prompt " * "
--width 80
--value " Not much, hby? "
Sesuaikan dengan 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
Minta masukan dengan perintah sederhana.
gum input > answer.txt
gum input --password > password.txt
Minta beberapa teks multi-baris ( ctrl+d
untuk menyelesaikan entri teks).
gum write > story.txt
Filter daftar nilai dengan pencocokan fuzzy:
echo Strawberry >> flavors.txt
echo Banana >> flavors.txt
echo Cherry >> flavors.txt
gum filter < flavors.txt > selection.txt
Pilih beberapa opsi dengan tanda --limit
atau tanda --no-limit
. Gunakan tab
atau ctrl+space
untuk memilih, enter
untuk konfirmasi.
cat flavors.txt | gum filter --limit 2
cat flavors.txt | gum filter --no-limit
Pilih opsi dari daftar pilihan.
echo " Pick a card, any card... "
CARD= $( gum choose --height 15 {{A,K,Q,J},{10..2}} " " {♠,♥,♣,♦} )
echo " Was your card the $CARD ? "
Anda juga dapat memilih beberapa item dengan tanda --limit
atau --no-limit
, yang menentukan jumlah maksimum item yang dapat dipilih.
cat songs.txt | gum choose --limit 5
cat foods.txt | gum choose --no-limit --header " Grocery Shopping "
Konfirmasikan apakah akan melakukan suatu tindakan. Keluar dengan kode 0
(afirmatif) atau 1
(negatif) tergantung pilihan.
gum confirm && rm file.txt || echo " File not removed "
Minta pengguna untuk memilih file dari pohon file.
EDITOR $( gum file $HOME )
Gulir dokumen panjang dengan nomor baris dan area pandang yang dapat disesuaikan sepenuhnya.
gum pager < README.md
Menampilkan spinner saat menjalankan skrip atau perintah. Pemintal akan otomatis berhenti setelah perintah yang diberikan keluar.
Untuk melihat atau menyalurkan output perintah, gunakan flag --show-output
.
gum spin --spinner dot --title " Buying Bubble Gum... " -- sleep 5
Jenis pemintal yang tersedia antara lain: line
, dot
, minidot
, jump
, pulse
, points
, globe
, moon
, monkey
, meter
, hamburger
.
Pilih satu baris dari beberapa data tabel.
gum table < flavors.csv | cut -d ' , ' -f 1
Cukup cetak string apa pun dengan tata letak apa pun dengan satu perintah.
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! '
Gabungkan teks secara vertikal atau horizontal. Gunakan perintah ini dengan gum style
untuk membuat tata letak dan keluaran yang cantik.
Tip: Selalu bungkus keluaran gum style
dalam tanda kutip untuk mempertahankan baris baru ( n
) saat menggunakannya sebagai argumen dalam perintah 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
proses dan memformat badan teks. gum format
dapat mengurai penurunan harga, string templat, dan emoji bernama.
# 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
Untuk informasi selengkapnya tentang pembantu templat, lihat dokumen Termenv. Untuk daftar lengkap nama emoji, lihat API GitHub.
log
mencatat pesan ke terminal dengan menggunakan level dan gaya yang berbeda menggunakan perpustakaan 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. "
Lihat paket Go time
untuk format --time
yang dapat diterima.
Lihat charmbracelet/log
untuk penggunaan lebih lanjut.
Cara menggunakan gum
dalam alur kerja sehari-hari Anda:
Lihat direktori contoh untuk kasus penggunaan dunia nyata lainnya.
git commit -m " $( gum input --width 50 --placeholder " Summary of changes " ) "
-m " $( gum write --width 80 --placeholder " Details of changes " ) "
$EDITOR
Anda $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
sederhana. 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 "
Kami ingin mendengar pendapat Anda tentang proyek ini. Jangan ragu untuk mengirimkan pesan kepada kami!
MIT
Bagian dari Pesona.
Charm热爱开源 • Charm menyukai open source