普段使っているシェルスクリプトの数が増えてきて、うまく管理できるツール無いかなーと思っていたところにRerunというのを見つけたので紹介してみます。
#Rerunって?
Rerun by rerun
Rerun is a simple command runner that turns loose shell scripts into modular automation.
rerunは複数のスクリプトをモジュールとして取りまとめ、スクリプトの管理と呼び出しをサポートしてくれるツールです。
実際に導入しながらどんなものか見ていきます。
#インストール
Installation · rerun/rerun Wiki を参考に。
$ git clone git://github.com/rerun/rerun.git
$ cd rerun
モジュール・コマンド作成
まずはモジュールを作ってみます。rerunにはstubbsというモジュール作成の為のモジュールが入っているので、これを使います。
$ ./rerun stubbs:add-module --description "sample local module" --module "local"
$ ./rerun
Available modules in "/Users/horimislime/Desktop/software/rerun/modules":
local: "sample local module" - 1.0.0
stubbs: "Simple rerun module builder" - 1.0.2
試しにstubbsのadd-moduleコマンドで、ローカル作業に関するスクリプトをひとまとめにする"local"モジュールを作成しました。rerunを引数なしで実行すると、使用できるモジュール一覧が確認できます。
次にモジュールへコマンドを追加してみます。コマンドとはモジュール内で管理するシェルスクリプトとそのメタデータをひとまとめにしたモノで、さっきと同じくstubbsで作成します。
$ ./rerun stubbs:add-command --module local --command hello --description "Hello world comamnd"
$ ./rerun local
Available commands in module, "/Users/horimislime/Desktop/software/rerun/modules/local":
hello: "Hello world comamnd"
これでrerunディレクトリ下に modules/local/commands/hello/ が作成されます。helloディレクトリ下には実行するスクリプトのひな形であるscriptと、作成時に指定したdescription等の情報が入った metadataファイルが出来上がっています。
scriptにはひな形で色々書かれていますが、ひとまず無視して最下部の方に処理を追加します。
# Command implementation
# ----------------------
# - - -
# Put the command implementation here.
# - - -
echo 'Hello rerun command!'
# Done. Exit with last command exit status.
exit $?
#実行
作成したスクリプトを呼び出してみます。
$ ./rerun local:hello
Hello rerun command!
こんな感じです。扱っているスクリプトが増えれば増えるほど、rerunのモジュールを使ったグループ化が役に立ちそうです。あとモジュールやコマンド毎に概要やバージョン番号のメタデータを付けられるのもいいですね。仮に作ったコマンドを忘れてしまっても、 rerun [モジュール名] でコマンド一覧といっしょにその概要も見ることができます。
以上がrerunの基本的な機能ですが、他にもモジュールをアーカイブ化して配布可能にできたり、まだまだ便利な使い方がありそうです。 rerun-modules にはモジュールがいくつか公開されているので、コマンドの拡張方法とかはこっちを参考にすると良さそうです。