Internal usage of inputTaskDyn

This commit is contained in:
Adrien Piquerez 2025-02-07 12:02:16 +01:00
parent 11cd58daa7
commit 711df2cbf2
2 changed files with 22 additions and 23 deletions

View File

@ -4705,22 +4705,20 @@ trait BuildExtra extends BuildCommon with DefExtra {
baseArguments: String* baseArguments: String*
): Vector[Setting[?]] = { ): Vector[Setting[?]] = {
Vector( Vector(
scoped := Def scoped := Def.inputTaskDyn {
.input(_ => Def.spaceDelimited()) val result = Def.spaceDelimited().parsed
.flatMapTask { result => initScoped(
initScoped( scoped.scopedKey,
scoped.scopedKey, ClassLoaders.runner.mapReferenced(Project.mapScope(_.rescope(config))),
ClassLoaders.runner.mapReferenced(Project.mapScope(_.rescope(config))), ).zipWith(Def.task {
).zipWith(Def.task { ((config / fullClasspath).value, streams.value, fileConverter.value, result)
((config / fullClasspath).value, streams.value, fileConverter.value, result) }) { (rTask, t) =>
}) { (rTask, t) => (t, rTask) mapN { case ((cp, s, converter, args), r) =>
(t, rTask) mapN { case ((cp, s, converter, args), r) => given FileConverter = converter
given FileConverter = converter r.run(mainClass, cp.files, baseArguments ++ args, s.log).get
r.run(mainClass, cp.files, baseArguments ++ args, s.log).get
}
} }
} }
.evaluated }.evaluated
) ++ inTask(scoped)((config / forkOptions) := forkOptionsTask.value) ) ++ inTask(scoped)((config / forkOptions) := forkOptionsTask.value)
} }

View File

@ -747,13 +747,12 @@ object BuildServerProtocol {
private inline def bspInputTask[T]( private inline def bspInputTask[T](
inline taskImpl: (BspFullWorkspace, ScopeFilter) => T inline taskImpl: (BspFullWorkspace, ScopeFilter) => T
): Def.Initialize[InputTask[T]] = ): Def.Initialize[InputTask[T]] =
Def Def.inputTaskDyn {
.input(_ => targetIdentifierParser) val targets = targetIdentifierParser.parsed
.flatMapTask { targets => val workspace: BspFullWorkspace = bspFullWorkspace.value.filter(targets)
val workspace: BspFullWorkspace = bspFullWorkspace.value.filter(targets) val filter = ScopeFilter.in(workspace.scopes.values.toList)
val filter = ScopeFilter.in(workspace.scopes.values.toList) Def.task(taskImpl(workspace, filter))
Def.task(taskImpl(workspace, filter)) }
}
private def jvmEnvironmentItem(): Initialize[Task[JvmEnvironmentItem]] = Def.task { private def jvmEnvironmentItem(): Initialize[Task[JvmEnvironmentItem]] = Def.task {
val target = Keys.bspTargetIdentifier.value val target = Keys.bspTargetIdentifier.value
@ -866,7 +865,8 @@ object BuildServerProtocol {
.map(JsonParser.parseFromString) .map(JsonParser.parseFromString)
private def bspRunTask: Def.Initialize[InputTask[Unit]] = private def bspRunTask: Def.Initialize[InputTask[Unit]] =
Def.input(_ => jsonParser).flatMapTask { json => Def.inputTaskDyn {
val json = jsonParser.parsed
val runParams = json.flatMap(Converter.fromJson[RunParams]).get val runParams = json.flatMap(Converter.fromJson[RunParams]).get
val defaultClass = Keys.mainClass.value val defaultClass = Keys.mainClass.value
val defaultJvmOptions = Keys.javaOptions.value val defaultJvmOptions = Keys.javaOptions.value
@ -909,7 +909,8 @@ object BuildServerProtocol {
} }
private def bspTestTask: Def.Initialize[InputTask[Unit]] = private def bspTestTask: Def.Initialize[InputTask[Unit]] =
Def.input(_ => jsonParser).flatMapTask { json => Def.inputTaskDyn {
val json = jsonParser.parsed
val testParams = json.flatMap(Converter.fromJson[TestParams]).get val testParams = json.flatMap(Converter.fromJson[TestParams]).get
val workspace = bspFullWorkspace.value val workspace = bspFullWorkspace.value