自動で sbt の version をいい感じに切り替えてくれる sbt-extras というのを使い始めた

これ
https://github.com/paulp/sbt-extras

きっかけは、

  • さくらのVPNが新しいプラン発表される ↓
  • 新しい方に申しこむ ↓
  • いままで使っていたものがそのまま移行できないらしいので手動で以降ェ・・・ ↓
  • 今まで sbt7 sbt10 sbt11 sbt12 ってそれぞれファイルつくってたけど、この際やりかた変えようかな・・・

という感じで。sbt はご存知の通り(?) それぞれ
0.7系 ⇔ 0.10系 ⇔ 0.11系 ⇔ 0.12系
で、相互にlauncherの互換性がないわけです。(たとえば0.11.1と0.11.2とかならば互換性ある)
どういうことかというと、0.10.0のlancuherを使って0.11.0を起動させることができない。

で、それらをうまくやってくれたりその他いろいろやってくれるのが*1 sbt-extras なわけです。おもにシェルスクリプトとかです*2なのでもちろんwindowsとかでは使えません。

これつかえば、sbtって打つだけで、ちゃんと

  • build.propertiesに0.10.0って書いてあれば0.10.0で起動
  • build.propertiesに0.11.0って書いてあれば0.11.0で起動

とかできます。*3
で、最初grepのオプションがbash_profileで

export GREP_OPTIONS='--color=always -n -r'

と指定していたことにより、以下のようなURLにアクセスしにいってしまったので

http://typesafe.artifactoryonline.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/1:sbt.version=0.11.2/sbt-launch.jar

ちょっと変えました。*4


もう1点、デフォルトだと project ディレクトリまたは build.properties がない場合、単にsbtって打つと何もせずに終了するという動作で、微妙に使いづらかったので*5sbtというコマンド打った後に選択できようにするなど、forkして改変しました。

https://github.com/xuwei-k/sbt-extras/commit/22428d32a5c3f8f7851b113603620b69b9608585

bash詳しくないので、もっと良い書き方あったら教えて下さい。

まだ使いこなしてないのであれですが、とりあえずsbt7 sbt10 sbt11 sbt12 って大量にファイル作って使い分けるよりはよっぽど便利そうです

*1:scalaでの一番のコミッターである Paul Phillips さんがつくった

*2:というかscalaのファイルもあるけど全体としてなにやってるのかまだ把握できていない

*3:なんでこの程度の機能がsbtに標準でついていないのか謎ですが。。。もう今更しょうがないので・・・

*4:これの解決に数十分を要するほどにbashとかの知識がない・・・(´・ω・`)

*5: オリジナルのほうは、新規に明示的にproject作成する場合は、-sbt-create というオプションを加えないといけないという動作