LoginSignup
8

More than 5 years have passed since last update.

posted at

gitやvagrantに小手先だけでサブコマンドっぽいものを追加する

gitやvagrantに普通にサブコマンドを追加するならpluginを作ることになったりすると思いますが、そういうことしません。作り方知りません。
私の考えたやり方は、

  1. 新しいサブコマンドなら専用の処理、既存のサブコマンドなら今までどおりの処理を行うシェル関数を書く
  2. その関数を目的のコマンドにaliasする

だけです。
と、これだけ言っても分からんと思うので、例としてvagrantに、boxをdestroyしてupするrestartサブコマンドを追加します。
.zshrcに以下の記述をします。

function vagrant_wrapper() {
    if [ $1 = 'restart' ]; then
        shift
        \vagrant destroy -f $@ && \vagrant up $@
    else
        \vagrant $@
    fi
}

alias vagrant=vagrant_wrapper

これでvagrant restart BOX_NAMEでdestroy && upが出来ます。もちろんrestart以外のコマンドも使えます。

ポイントとしてはvagrant_wrapperの中で使うvagrantコマンドのサフィックスにバックスラッシュ\をつけることです。バックスラッシュをつけるとaliasを無視して元のコマンドが発動します。つけないと多分無限ループするので注意。

こんな感じでプラグインを作らずともサブコマンドを追加出来るよ、というお話でした。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
8