매력적인 쉘 스크립트를 위한 도구입니다. Go 코드를 작성하지 않고도 스크립트와 별칭에서 Bubbles 및 Lip Gloss의 기능을 활용해 보세요!
위의 예는 단일 쉘 스크립트(소스)에서 실행됩니다.
Gum은 단 몇 줄의 코드만으로 유용한 쉘 스크립트와 도트파일 별칭을 작성할 수 있도록 고도로 구성 가능하고 즉시 사용 가능한 유틸리티를 제공합니다. 도트 파일에 대한 기존 커밋을 작성하는 데 도움이 되는 간단한 스크립트를 작성해 보겠습니다.
gum을 사용한 커밋 유형을 요청하려면 다음을 선택하세요.
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
: 출력할 로그 메시지 --flags
및 $ENVIRONMENT_VARIABLES
사용하여 gum
옵션과 스타일을 사용자 정의할 수 있습니다. 각 명령의 사용자 정의 및 구성 옵션에 대한 전체 보기를 보려면 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
과 함께 이 명령을 사용하세요.
팁: join
명령에서 인수로 사용할 때 개행 문자( n
)를 유지하려면 gum style
의 출력을 항상 따옴표로 묶으십시오.
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. "
허용되는 --time
형식은 Go 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
사용하여 GitHub 풀 요청을 확인하세요. 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 "
우리는 이 프로젝트에 대한 귀하의 생각을 듣고 싶습니다. 언제든지 메모를 남겨주세요!
MIT
매력의 일부.
Charm爱开源 • Charm은 오픈소스를 좋아합니다.