Panda Noir

JavaScript の限界を究めるブログでした。最近はいろんな分野を幅広めに書いてます。

just-cliでzsh関数をまとめる、簡単に選べるようにする

こんな感じで選択でき、troubleshoot kill-port 8080 みたいな感じで実行できる。

モチベ: 似ているローカル関数が増えてきた

最近、トラブルシューティング用のzsh関数を乱造しているのだが(shoot-kill-portみたいな)、増えすぎて流石に視認性が悪くなってきた。どれが何かコメントなしでは分からない(上の例はサンプルで作ったものなのでパッと見でギリ分かるが)。

just-cliを使ってローカル関数をまとめる

やり方はカンタン。以下のようなレシピファイルを用意してエイリアスを設定するだけ。

alias troubleshoot="just -f $HOME/just/troubleshoot.just --"

troubleshoot.justの中身

# ポートを使用中のプロセスを終了する
kill-port port:
    lsof -ti:{{port}} | xargs -r kill

# ローカルDBを作り直して初期データを投入する
reset-db:
    docker compose down db
    docker volume rm app_db_data || true
    docker compose up -d db
    pnpm db:migrate
    pnpm db:seed

# コンテナ内でシェルを起動する
shell service:
    docker compose exec {{service}} sh

# 使えるコマンド一覧を表示する
[default]
help:
  @just -f {{justfile()}} --list

これで補完とかも効くようになる(justのセットアップはしておく必要ある)。

コマンドを指定しなければhelpが表示される(↓)。

余談

just-cli、ずっと前から存在は知ってたんだけど、「ちょっといいmakeじゃねえか」の気持ちが拭えずに使ってなかった。今回zsh関数をまとめるものとして再定義してようやく腹落ちした。本来のユースケースっぽい、プロジェクトローカルの関数を定義する用途としてはどうなんですかね。