魅力的なシェルスクリプトのためのツール。 Go コードを書かなくても、スクリプトやエイリアスで Bubbles と Lip Gloss の力を活用できます。
上記の例は、単一のシェル スクリプト (ソース) から実行されています。
Gum は、わずか数行のコードで便利なシェル スクリプトやドットファイル エイリアスを作成できる、高度に構成可能ですぐに使用できるユーティリティを提供します。ドットファイルの従来のコミットを作成するのに役立つ簡単なスクリプトを構築してみましょう。
ガムを使用してコミット タイプを尋ね、次を選択します。
gum choose " fix " " feat " " docs " " style " " refactor " " test " " chore " " revert "
注記
このコマンド自体は 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 "
これらのコマンドを 1 つのスクリプトに組み合わせる完全な例を確認してください。
パッケージマネージャーを使用します。
# 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
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 "
このプロジェクトについてのご意見をお待ちしております。お気軽にメモを残してください。
マサチューセッツ工科大学
チャームの一部。
Charm热爱开源 • Charmはオープンソースが大好きです