これまで、主にタスクを見てきました。シェルからユーザー入力を受け付ける入力タスクと呼ばれる別の種類のタスクがあります。これの典型的な例は、Compile / run
タスクです。scalastyle
タスクも実際には入力タスクです。入力タスクの詳細については、入力タスクを参照してください。
さて、Compile / run
タスクを呼び出してから、テスト目的でブラウザを開きたいとしましょう。
object Greeting {
def main(args: Array[String]): Unit = {
println("hello " + args.toList)
}
}
lazy val runopen = inputKey[Unit]("run and then open the browser")
lazy val root = (project in file("."))
.settings(
runopen := {
(Compile / run).evaluated
println("open browser!")
}
)
ここでは、副作用としてprintln
を使用してブラウザの開く動作を模倣しています。このタスクはシェルから呼び出すことができます。
> runopen foo
[info] Compiling 1 Scala source to /x/proj/...
[info] Running Greeting foo
hello List(foo)
open browser!
新しい入力タスクをCompile / run
に書き直すことで、実際にはrunopen
キーを削除できます。
lazy val root = (project in file("."))
.settings(
Compile / run := {
(Compile / run).evaluated
println("open browser!")
}
)