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]
,因此我也不能使用解析的

有更好的方法吗