ターミナルがダサいとモテない。pierでTerminal Taskをひとまとめ

ターミナルがダサいとモテない。pierでTerminal Taskをひとまとめ

Photo by Sigmund on Unsplash

Command-Line Frameworkが好き

自分はCommand-Line Frameworkが大好きなんですが・・・
またまた見つけてしまいました。

pierです。Rustで実装されてます。

GitHub - pier-cli/pier: A Linux script management CLI written in Rust

A Linux script management CLI written in Rust. Contribute to pier-cli/pier development by creating an account on…

github.com

Command-Line Frameworkというと、自分はいろいろ活用してきました。

古くはPerlのApp::CmdApp::Rad

bashのrerun

こちらは自分でmedium書いてますね

ターミナルがダサいとモテない。bash command-line framework rerun編

bashのmodule型command-line framework rerun

medium.com

あとはRustで作られてるargc
これも自分でmedium書いてますね。

ターミナルがダサいとモテない。bash command-line framework argc編

command-line frameworkは何を使っていますか?

medium.com

bashだと処理内容的に辛いな・・・ってときに、Pythonで書けるTyper

Typer

Typer, build great CLIs. Easy to code. Based on Python type hints.

typer.tiangolo.com

この通りCommand-Line Frameworkが大好きです。

今日はpierを紹介しようと思います。

pierの簡単な説明

githubのDescriptionに書いてありますね

GitHub - pier-cli/pier: A Linux script management CLI written in Rust

A Linux script management CLI written in Rust. Contribute to pier-cli/pier development by creating an account on…

github.com

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

A Linux script management CLI written in Rust. Contribute to pier-cli/pier development by creating an account on…

github.com

Plain text
cargo install pier

これで入ります。

pierのpre-init

macOSだと${HOME}/Library/Preferences/pier/config.tomlがdefaultのconfig pathになっていて気持ち悪いのとdotfilesをyadmで管理できないので変更します。

helpを見ると・・・

Plain text
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を設定できるみたいですね

Plain text
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に以下のように設定しました。

Plain text
# pier
if command -v pier &> /dev/null; then
  declare -x PIER_CONFIG_PATH=${XDG_CONFIG_HOME}/pier/config.toml
fi

まあこれは自分の癖や気持ちの問題なので気にしないでください。

Plain text
pier --help

環境変数を読み込ませるとHelpの出力のOptions -cの最後あたりに
env: でPIER_CONFIG_PATHが出力されるので確認できます。

Plain text
- $HOME/.pier [env: PIER_CONFIG_PATH=/Users/xxxxxx/.config/pier/config.toml]

pier config-init

PIER_CONFIG_PATHを設定できたら環境変数が読み込まれてることを確認して以下を実行してみましょう。

Plain text
pier config-init

pier config.toml

config-initしたらこんな感じのtomlができます。

ひとつscriptもsampleの登録されます。

Plain text
cat ${PIER_CONFIG_PATH}

[scripts.hello-pier]
command = 'echo Hello, Pier!'
description = 'This is an example command.'

[default]

pier list

listで登録されてる一覧が確認できます。

Plain text
pier list
≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖
⋮ Alias             ⋮ Tags ⋮ Command                                ⋮ Description                 ⋮
≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖
⋮ hello-pier        ⋮      ⋮ echo Hello, Pier!                      ⋮ This is an example command. ⋮
≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖≖

hello-pierは最初から登録されてます。

pier run

実際にhello-pierを実行してみます。

Plain text
pier run hello-pier
Hello, Pier!

実際にconfig.tomlを見ると

Plain text
[scripts.hello-pier]
command = 'echo Hello, Pier!'
description = 'This is an example command.'

commandのパラメータを実行してます。

これでだいたいわかってきてると思うので次は実際に追加してみましょう。

pier add

pier addでscriptsを追加できます。

ここではあくまでもサンプルとしてbatcacheを作り直してます。

Plain text
pier add \
  --alias rebuild-cache-bat \
  --description "Rebuilding the bat cache" \
  --tag bat \
  -- "bat cache --clear & bat cache --build"
Added rebuild-cache-bat

実際に登録したものを走らせてみます。

Plain text
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

A Linux script management CLI written in Rust. Contribute to pier-cli/pier development by creating an account on…

github.com

shebangもtomlのヒアドキュメント形式で書けるみたいなので、自分はこっちの方が好みかな

GitHub - pier-cli/pier: A Linux script management CLI written in Rust

A Linux script management CLI written in Rust. Contribute to pier-cli/pier development by creating an account on…

github.com

あとは実際に登録するとき、ちょっと複雑なscriptであれば
pier addのhelpに記載してある通りにやらないで

Plain text
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を編集した方がやりやすいかもしれないですね。

Plain text
pier add [FLAGS] [OPTIONS] --alias <alias> [--] [ここに適当にいれて]

vi ${PIER_CONFIG_PATH}

ちょっと個人的に使ってみようかな

ターミナル環境について他の記事も書いているので、よろしければこちらもご覧ください!
『ターミナルがダサいとモテない』シリーズ一覧

転載:ターミナルがダサいとモテない。pierでTerminal Taskをひとまとめ

この記事は Medium(@yusuke_h) からの転載です。