Command-Line Frameworkが好き
自分はCommand-Line Frameworkが大好きなんですが・・・
またまた見つけてしまいました。
pierです。Rustで実装されてます。
GitHub - pier-cli/pier: A Linux script management CLI written in Rust
Command-Line Frameworkというと、自分はいろいろ活用してきました。
bashのrerun
こちらは自分でmedium書いてますね
ターミナルがダサいとモテない。bash command-line framework rerun編
あとはRustで作られてるargc
これも自分でmedium書いてますね。
ターミナルがダサいとモテない。bash command-line framework argc編
bashだと処理内容的に辛いな・・・ってときに、Pythonで書けるTyper
この通りCommand-Line Frameworkが大好きです。
今日はpierを紹介しようと思います。
pierの簡単な説明
githubのDescriptionに書いてありますね
GitHub - pier-cli/pier: A Linux script management CLI written in Rust
scriptを書いて便利になったけど、いろんなサーバがあって
PATHの設定が・・・
script名の命名が・・・
作者の苛立ちが感じられます😅
気持ちわかります👍
ざっくり自分の斜め読み理解で説明すると
- Installはcargo install
- tomlファイルでScript本体とそのメタデータを一元管理
- pier本体とtomlだけで複数のscriptを持ち回れる
素敵じゃん🤣
んじゃさっそく始めてみます。
pierのInstall
githubに見逃すレベルでさらっと書かれています。
GitHub - pier-cli/pier: A Linux script management CLI written in Rust
cargo install pier
これで入ります。
pierのpre-init
macOSだと${HOME}/Library/Preferences/pier/config.tomlがdefaultのconfig pathになっていて気持ち悪いのとdotfilesをyadmで管理できないので変更します。
helpを見ると・・・
pier --help
pier 0.1.6
Benjamin Scholtz, Isak Johansson
A simple script management CLI
USAGE:
pier [FLAGS] [OPTIONS] <alias> [args]...
pier [FLAGS] [OPTIONS] <SUBCOMMAND>
FLAGS:
-h, --help
Prints help information
-V, --version
Prints version information
-v, --verbose
The level of verbosity
OPTIONS:
-c, --config-file <path>
Sets a custom config file.
DEFAULT PATH is otherwise determined in this order:
- $PIER_CONFIG_PATH (environment variable if set)
- pier.toml (in the current directory)
- $XDG_CONFIG_HOME/pier/config.toml
- $XDG_CONFIG_HOME/pier/config
- $XDG_CONFIG_HOME/pier.toml
- $HOME/.pier.toml
- $HOME/.pier [env: PIER_CONFIG_PATH=]
ARGS:
<alias>
The alias or name for the script
<args>...
The positional arguments to send to script
SUBCOMMANDS:
add Add a new script to config
config-init alias: init - Add a config file
copy alias: cp - Copy existing alias to the new one
edit Edit a script matching alias
help Prints this message or the help of the given subcommand(s)
list alias: ls - List scripts
move alias: mv, rename - Move/rename existing alias to the new one
remove alias: rm - Remove a script matching alias
run Run a script matching alias
show Show a script matching alias
いくつかのパターンでconfig pathを設定できるみたいですね
DEFAULT PATH is otherwise determined in this order:
- $PIER_CONFIG_PATH (environment variable if set)
- pier.toml (in the current directory)
- $XDG_CONFIG_HOME/pier/config.toml
- $XDG_CONFIG_HOME/pier/config
- $XDG_CONFIG_HOME/pier.toml
- $HOME/.pier.toml
- $HOME/.pier [env: PIER_CONFIG_PATH=]
ちょっと自分の場合は確実に設定したいのでbashrcに以下のように設定しました。
# pier
if command -v pier &> /dev/null; then
declare -x PIER_CONFIG_PATH=${XDG_CONFIG_HOME}/pier/config.toml
fi
まあこれは自分の癖や気持ちの問題なので気にしないでください。
pier --help
環境変数を読み込ませるとHelpの出力のOptions -cの最後あたりに
env: でPIER_CONFIG_PATHが出力されるので確認できます。
- $HOME/.pier [env: PIER_CONFIG_PATH=/Users/xxxxxx/.config/pier/config.toml]
pier config-init
PIER_CONFIG_PATHを設定できたら環境変数が読み込まれてることを確認して以下を実行してみましょう。
pier config-init
pier config.toml
config-initしたらこんな感じのtomlができます。
ひとつscriptもsampleの登録されます。
cat ${PIER_CONFIG_PATH}
[scripts.hello-pier]
command = 'echo Hello, Pier!'
description = 'This is an example command.'
[default]
pier list
listで登録されてる一覧が確認できます。
pier list
≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖
⋮ Alias ⋮ Tags ⋮ Command ⋮ Description ⋮
≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖
⋮ hello-pier ⋮ ⋮ echo Hello, Pier! ⋮ This is an example command. ⋮
≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖
hello-pierは最初から登録されてます。
pier run
実際にhello-pierを実行してみます。
pier run hello-pier
Hello, Pier!
実際にconfig.tomlを見ると
[scripts.hello-pier]
command = 'echo Hello, Pier!'
description = 'This is an example command.'
commandのパラメータを実行してます。
これでだいたいわかってきてると思うので次は実際に追加してみましょう。
pier add
pier addでscriptsを追加できます。
ここではあくまでもサンプルとしてbatのcacheを作り直してます。
pier add \
--alias rebuild-cache-bat \
--description "Rebuilding the bat cache" \
--tag bat \
-- "bat cache --clear & bat cache --build"
Added rebuild-cache-bat
実際に登録したものを走らせてみます。
pier run rebuild-cache-bat
Clearing theme set cache ... okay
Clearing syntax set cache ... okay
Clearing metadata file ... okay
Writing theme set to /Users/xxxxxxxx/.cache/bat/themes.bin ... okay
Writing syntax set to /Users/xxxxxxxx/.cache/bat/syntaxes.bin ... okay
Writing metadata to folder /Users/xxxxxxxx/.cache/bat ... okay
感想
githubのREADMEにも書いてある通りで、cargo installしてtomlをdotfilesで持っていくだけで一通りのscriptを持ち回れるのはとてもいい感じ
READMEを読むと
defaultのinterpriterを設定できるみたいでnodeなどの例もあるんで、全部nodeで書くとかなら設定するといいかも
GitHub - pier-cli/pier: A Linux script management CLI written in Rust
shebangもtomlのヒアドキュメント形式で書けるみたいなので、自分はこっちの方が好みかな
GitHub - pier-cli/pier: A Linux script management CLI written in Rust
あとは実際に登録するとき、ちょっと複雑なscriptであれば
pier addのhelpに記載してある通りにやらないで
pier add --help
pier-add 0.1.6
Add a new script to config
USAGE:
pier add [FLAGS] [OPTIONS] --alias <alias> [--] [command]
FLAGS:
-f, --force Allows to overwrite the existing script
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-a, --alias <alias> The alias or name for the script
-d, --description <description> The description for the script
-t, --tag <tags>... Set which tags the script belongs to
ARGS:
<command> The command/script content to be executed. If this argument is not found it will open your $EDITOR
for you to enter the script into
commandの入力に適当に入れてtomlを編集した方がやりやすいかもしれないですね。
pier add [FLAGS] [OPTIONS] --alias <alias> [--] [ここに適当にいれて]
vi ${PIER_CONFIG_PATH}
ちょっと個人的に使ってみようかな