Вызов TaskKey с другими настройками
Я использую плагин sbt-assembly
(версия 0.13.0), и я хотел бы позвонить assemblyPackageDependency
с или без appendContentHash
в зависимости от некоторых InputKey
В принципе, я хотел бы сделать что-то вроде этого:
lazy val isGlobalCached = InputKey[Boolean]("")
lazy val myTask = taskKey[sbt.File]("myTask")
myTask := {
if (isGlobalCached.value)
//run with the modified assemblyOption
//assemblyOption in assemblyPackageDependency ~= { x => x.copy(appendContentHash = true) }
assemblyPackageDependency.value
else
assemblyPackageDependency.value
}
но я не могу понять, как установить assemblyOption
только если условие верно, а не глобально
Вот несколько вещей, которые я попробовал, но это не сработало:
lazy val isGlobalCached = InputKey[Boolean]("")
lazy val myTask = taskKey[sbt.File]("myTask")
lazy val assemblyPackageDependencyWithHash = taskKey[sbt.File]("assemblyPackageDependencyWithHash")
assemblyPackageDependencyWithHash <<= assemblyPackageDependency
assemblyOption in assemblyPackageDependencyWithHash ~= { x => x.copy(appendContentHash = true) }
myTask := {
//run with the modified assemblyOption
if (isGlobalCached.value)
assemblyPackageDependencyWithHash.value
else
assemblyPackageDependency.value
}
а также:
lazy val isGlobalCached = InputKey[Boolean]("")
lazy val myTask = taskKey[sbt.File]("myTask")
lazy val globalCacheConf = config("globalCacheConf")
assemblyOption in globalCacheConf := (assemblyOption in assemblyPackageDependency).value.copy(appendContentHash = true)
myTask := {
//run with the modified assemblyOption
if (isGlobalCached.value)
assemblyPackageDependency.in(globalCacheConf).value
else
assemblyPackageDependency.value
}
1 ответ
import complete.DefaultParsers._
val myCmd : Command = Command("myCmd")(_ => Space ~> Bool) { (state, globalCached) =>
val extracted = Project extract state
import extracted._
Project.runTask(
assemblyPackageDependency,
append(Seq(assemblyOption in assemblyPackageDependency := globalCached), state)
)
state
}
commands += myCmd