sbtとpecoでテンプレートを選択してプロジェクトを作成する

sbtではsbt new playframework/play-scala-seed.g8などのようにしてgiter8テンプレートを指定してプロジェクトを作成することができます。

しかし、プロジェクトを作るたびにテンプレートのリポジトリ名を調べるのも面倒です。そこで、giter8のWikiにまとめられているgiter8テンプレートのリストからpecoでインクリメンタルサーチしてプロジェクトを作成できるようにしてみました。

function peco-sbt-new() {
  local TEMPLATE=`curl https://github.com/foundweekends/giter8/wiki/giter8-templates -s | grep "\.g8<" | sed -e "s/</ /g" -e "s/>/ /g" | awk '{print $3}' | peco | head -n 1`
  if [[ -z "$TEMPLATE" ]]; then
    return
  fi
  sbt new $TEMPLATE
}

上記のような感じのスクリプト.bash_profileに入れておき、peco-sbt-newを実行するとテンプレートを選択してsbt newを実行できます。

f:id:takezoe:20170819163550p:plain

これでgiter8のWikiさえメンテしていれば新しいテンプレートも使えるようになります。

ちょっとしたものですが、テストやユーザサポートなどの用途などの目的でgiter8テンプレートからPlayやScalatraのプロジェクトを作成することがちょくちょくあるので割と便利な感じです。