เครื่องมือสำหรับเชลล์สคริปต์ที่สวยงาม ใช้ประโยชน์จากพลังของ Bubbles และ Lip Gloss ในสคริปต์และนามแฝงของคุณโดยไม่ต้องเขียนโค้ด Go ใดๆ!
ตัวอย่างข้างต้นกำลังทำงานจากเชลล์สคริปต์เดียว ((ที่มา ))
Gum มียูทิลิตี้ที่กำหนดค่าได้สูงและพร้อมใช้งานเพื่อช่วยคุณเขียนเชลล์สคริปต์และนามแฝง dotfiles ที่เป็นประโยชน์ด้วยโค้ดเพียงไม่กี่บรรทัด มาสร้างสคริปต์ง่ายๆ เพื่อช่วยคุณเขียน Conventional Commits สำหรับ dotfiles ของคุณ
สอบถามประเภทการคอมมิตแบบหมากฝรั่ง เลือก:
gum choose " fix " " feat " " docs " " style " " refactor " " test " " chore " " revert "
บันทึก
คำสั่งนี้จะพิมพ์ไปที่ stdout ซึ่งไม่มีประโยชน์ทั้งหมด หากต้องการใช้คำสั่งในภายหลัง คุณสามารถบันทึก stdout ลงใน $VARIABLE
หรือ file.txt
ได้
พร้อมท์สำหรับขอบเขตของการเปลี่ยนแปลงเหล่านี้:
gum input --placeholder " scope "
พร้อมท์สำหรับการสรุปและคำอธิบายการเปลี่ยนแปลง:
gum input --value " $TYPE$SCOPE : " --placeholder " Summary of this change "
gum write --placeholder " Details of this change "
ยืนยันก่อนกระทำการ:
gum confirm " Commit changes? " && git commit -m " $SUMMARY " -m " $DESCRIPTION "
ดูตัวอย่างที่สมบูรณ์สำหรับการรวมคำสั่งเหล่านี้ไว้ในสคริปต์เดียว
ใช้ตัวจัดการแพ็คเกจ:
# 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
หรือดาวน์โหลด:
หรือเพียงติดตั้งด้วย go
:
go install github.com/charmbracelet/gum@latest
choose
: เลือกตัวเลือกจากรายการตัวเลือกconfirm
: ขอให้ผู้ใช้ยืนยันการกระทำfile
: เลือกไฟล์จากโฟลเดอร์filter
: กรองรายการจากรายการformat
: จัดรูปแบบสตริงโดยใช้เทมเพลตinput
: แจ้งให้ป้อนข้อมูลบางอย่างjoin
: รวมข้อความในแนวตั้งหรือแนวนอนpager
: เลื่อนดูไฟล์spin
: แสดงสปินเนอร์ขณะรันคำสั่งstyle
: ใช้การระบายสี เส้นขอบ การเว้นวรรคกับข้อความtable
: แสดงผลตารางข้อมูลwrite
: แจ้งข้อความแบบยาวlog
: บันทึกข้อความเพื่อส่งออก คุณสามารถปรับแต่งตัวเลือกและรูปแบบ gum
ได้ด้วย --flags
และ $ENVIRONMENT_VARIABLES
ดู gum <command> --help
เพื่อดูตัวเลือกการปรับแต่งและการกำหนดค่าของแต่ละคำสั่งแบบเต็ม
ปรับแต่งด้วย --flags
:
gum input --cursor.foreground " #FF0 "
--prompt.foreground " #0FF "
--placeholder " What's up? "
--prompt " * "
--width 80
--value " Not much, hby? "
ปรับแต่งด้วย 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
พร้อมท์สำหรับการป้อนข้อมูลด้วยคำสั่งง่ายๆ
gum input > answer.txt
gum input --password > password.txt
แจ้งข้อความหลายบรรทัด ( ctrl+d
เพื่อกรอกข้อความ)
gum write > story.txt
กรองรายการค่าด้วยการจับคู่แบบคลุมเครือ:
echo Strawberry >> flavors.txt
echo Banana >> flavors.txt
echo Cherry >> flavors.txt
gum filter < flavors.txt > selection.txt
เลือกหลายตัวเลือกด้วยแฟล็ก --limit
หรือแฟล็ก --no-limit
ใช้ tab
หรือ ctrl+space
เพื่อเลือก enter
เพื่อยืนยัน
cat flavors.txt | gum filter --limit 2
cat flavors.txt | gum filter --no-limit
เลือกตัวเลือกจากรายการตัวเลือก
echo " Pick a card, any card... "
CARD= $( gum choose --height 15 {{A,K,Q,J},{10..2}} " " {♠,♥,♣,♦} )
echo " Was your card the $CARD ? "
คุณยังสามารถเลือกหลายรายการด้วยแฟล็ก --limit
หรือ --no-limit
ซึ่งกำหนดจำนวนสูงสุดของรายการที่สามารถเลือกได้
cat songs.txt | gum choose --limit 5
cat foods.txt | gum choose --no-limit --header " Grocery Shopping "
ยืนยันว่าจะดำเนินการหรือไม่ ออกด้วยรหัส 0
(ยืนยัน) หรือ 1
(ลบ) ขึ้นอยู่กับการเลือก
gum confirm && rm file.txt || echo " File not removed "
พร้อมท์ให้ผู้ใช้เลือกไฟล์จากแผนผังไฟล์
EDITOR $( gum file $HOME )
เลื่อนดูเอกสารขนาดยาวที่มีหมายเลขบรรทัดและวิวพอร์ตที่ปรับแต่งได้อย่างเต็มที่
gum pager < README.md
แสดงสปินเนอร์ขณะรันสคริปต์หรือคำสั่ง สปินเนอร์จะหยุดโดยอัตโนมัติหลังจากออกจากคำสั่งที่กำหนด
หากต้องการดูหรือไพพ์เอาต์พุตของคำสั่ง ให้ใช้แฟล็ก --show-output
gum spin --spinner dot --title " Buying Bubble Gum... " -- sleep 5
ประเภทสปินเนอร์ที่ใช้ได้ ได้แก่ line
dot
minidot
jump
pulse
points
globe
moon
monkey
meter
hamburger
เลือกแถวจากข้อมูลตารางบางส่วน
gum table < flavors.csv | cut -d ' , ' -f 1
พิมพ์สตริงใดก็ได้ด้วยเค้าโครงใดก็ได้ด้วยคำสั่งเดียว
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 style
เพื่อสร้างเลย์เอาต์และเอาท์พุตที่สวยงาม
เคล็ดลับ: ล้อมเอาต์พุตของ gum style
ไว้ในเครื่องหมายคำพูดเสมอเพื่อรักษาบรรทัดใหม่ ( n
) เมื่อใช้เป็นอาร์กิวเมนต์ในคำสั่ง 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
และจัดรูปแบบเนื้อหาของข้อความ gum format
สามารถแยกมาร์กดาวน์ สตริงเทมเพลต และชื่ออิโมจิได้
# 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
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวช่วยเทมเพลต โปรดดูเอกสาร Termenv สำหรับรายการอิโมจิที่มีชื่อทั้งหมด โปรดดูที่ GitHub API
log
บันทึกข้อความไปยังเทอร์มินัลโดยใช้ระดับที่แตกต่างกันและจัดรูปแบบโดยใช้ 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. "
ดูแพ็คเกจ Go time
สำหรับรูปแบบ --time
ที่ยอมรับได้
ดู charmbracelet/log
สำหรับการใช้งานเพิ่มเติม
วิธีใช้ gum
ในกระบวนการทำงานประจำวันของคุณ:
ดูไดเร็กทอรีตัวอย่างสำหรับกรณีการใช้งานจริงเพิ่มเติม
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
ง่าย 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 "
เราชอบที่จะได้ยินความคิดของคุณเกี่ยวกับโครงการนี้ โปรดแจ้งให้เราทราบ!
เอ็มไอที
ส่วนหนึ่งของเสน่ห์
Charm热爱เริ่ม源 • Charm รักโอเพ่นซอร์ส