Scala 从另一个InputAsk调用InputAsk,传递所有输入
假设我有以下任务来启动和停止某些内容:Scala 从另一个InputAsk调用InputAsk,传递所有输入,scala,sbt,Scala,Sbt,假设我有以下任务来启动和停止某些内容: val doStart = inputKey[Unit]("Starts something.") val doStop = taskKey[Unit]("Stops something.") 这里,doStartinput任务接受一些参数,这些参数控制事情的启动方式 现在我想编写一个任务doRestart,其行为类似于doStart,但首先调用doStop。这意味着我希望doRestart接受与doStart相同的参数,如果doStop失败,我不希望d
val doStart = inputKey[Unit]("Starts something.")
val doStop = taskKey[Unit]("Stops something.")
这里,doStart
input任务接受一些参数,这些参数控制事情的启动方式
现在我想编写一个任务doRestart
,其行为类似于doStart
,但首先调用doStop
。这意味着我希望doRestart
接受与doStart
相同的参数,如果doStop
失败,我不希望doStart
运行
我能想到的最好的定义是:
val doRestart = inputKey[Unit]("Stops and starts something.")
doRestart := Def.inputTaskDyn {
val args = Def.spaceDelimited().parsed
doStop.value
Def.inputTask {
doStart.evaluated
}.toTask(" " + args.mkString(" "))
}.evaluated
但是,我一点也不喜欢必须手动传递参数,特别是因为我看不到任何方法可以避免按空格分割输入(我找不到只将输入作为单个字符串传递的解析器)。另外,inputaskdyn
要求其参数返回一个Initialize[Task[T]]
,而不是Initialize[inputask[T]]
,因此我无法返回Def.inputask
和解析的结果,当调用Initialize[inputask[T]
时,返回Task[T]
,而不是Initialize>[Task[T]
,因此我也不能使用解析的
有更好的方法吗