أداة لنصوص شل براقة. استفد من قوة Bubbles وLip Gloss في نصوصك وأسماءك المستعارة دون كتابة أي كود Go!
المثال أعلاه يعمل من برنامج نصي واحد (مصدر).
يوفر Gum أدوات مساعدة عالية التهيئة وجاهزة للاستخدام لمساعدتك في كتابة نصوص برمجية مفيدة وأسماء مستعارة لملفات 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.
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 "
نحن نحب أن نسمع أفكارك حول هذا المشروع. لا تتردد في ترك لنا ملاحظة!
معهد ماساتشوستس للتكنولوجيا
جزء من سحر.
سحر热爱开源 • سحر يحب المصادر المفتوحة