Giter8 - Scala アプリケーションの雛形を作るためのコマンドラインツール

giter8 というツールが面白そうなので README を読んだ。

https://github.com/n8han/giter8

giter8

Giter8 は github 上に公開されたテンプレートからアプリケーションのひな形を作成するコマンドラインツールだ。 Scala で実装されており、 sbt のランチャー を使って起動するが、様々な用途に使える。

インストール

Giter8 は別の Scala コマンドラインツールである conscript を使ってインストールできる。 以下を実行すると conscript が ~/bin/cs にセットアップされる:

curl https://raw.github.com/n8han/conscript/master/setup.sh | sh

~/bin に PATH が通っていれば以下のようにして giter8 をインストールすることができる:

cs n8han/giter8

うまくいっているか確認するために g8 を引数無しで実行してみよう。 giter8 とその依存ライブラリがダウンロードされ、その後使用方法が出力されるはずだ。

giter8 の新しいバージョンが出た際はもう一度 cs コマンドを実行すると良い。

OS X であれば Homebrew を使ってインストールすることもできる。

brew install giter8

使い方

テンプレートは github に置き、".g8" というサフィックスを付ける必要がある。 wiki にテンプレートの一覧があり、 コマンドラインからは ".g8" というサフィックスのついたテンプレートを一覧表示させることができる:

g8 --list

例えば softprops/unfiltered.g8 をテンプレートとして使う場合は以下のようにする:

g8 softprops/unfiltered.g8

サフィックスは省略することができる:

g8 softprops/unfiltered

コマンドを実行するといろいろ聞かれるので適当に答えていくとアプリケーションのひな形が作成される。

(省略)

以下のようにしてアプリケーション名等のパラメータを指定してコマンドを実行することもできる:

g8 softprops/unfiltered.g8 --name=my-new-website

プライベートリポジトリを使う

プライベートなリポジトリを扱いたい場合は "~/.gh" に以下の情報を記述しておく:

username=yourusername
token=yourtoken

テンプレートを作る

g8 は github にあるプロジェクトの "src/main/g8" というディレクトリを探す。 この構造はテンプレートそれ自体を sbt プロジェクトとして作成することを簡単にする。 それにより、 github に変更を push する前に、ローカルでのテンプレートのテストに sbt プラグインを使うことができる。

giter8 テンプレートを使って簡単にテンプレートプロジェクトを作り始めることができる:

g8 n8han/giter8

これを実行すると "src/main/g8" にテンプレートのソースを含んだ sbt プロジェクトが作られる。 "default.properties" には Java のプロパティファイルのフォーマットでテンプレートに関する設定のデフォルト値が定義されている。 その他のファイルは全てテンプレートのソースだ。

Scalasti によってラップされた StringTemplate が giter8 テンプレートのエンジンとして使われているので、ソースファイル中の "$" に囲まれた文字がテンプレートのフィールドになる。(Scalasti や StringTemplate がなんなのかよくわかってない) 例えば "classname" というフィールドはソースファイルの中に以下のように記述することができる。

class $classname$ {

(省略)

テンプレートプロジェクトで sbt シェルを起動し "sbt-test" アクションを実行すると、 デフォルトの出力先("target/g8")にテンプレートが適用され、 フォークしたプロセス上でそのプロジェクトの "sbt update test" が実行される。 これは sbt プロジェクトを生成するテンプレートの整合性をチェックするのに良い。

sbt プロジェクトを生成しないテンプレートの場合は、ローレベルな "write-templates" アクションを使う。

テンプレートを github に push し(".g8" を後ろに付けるのを忘れずに)、実際の g8 コマンドを使ってテストすることができる。 この Wiki に書き込めば他の giter8 ユーザーがそのテンプレートを発見することができる。