in Frontend/src/main/kotlin/com/jetbrains/fortea/configuration/run/task/T4CompileBeforeRunTaskProvider.kt [34:68]
override fun executeTask(
context: DataContext,
configuration: RunConfiguration,
env: ExecutionEnvironment,
task: T4CompileBeforeRunTask
): Boolean {
if (configuration !is T4RunConfiguration) return false
val project = configuration.project
val view = project.getComponent<T4BuildSessionView>()
val executionRequest = configuration.parameters.request
if (executionRequest.isVisible) view.openWindow(RiderT4Bundle.message("status.t4.build.started"))
val finished = Semaphore()
finished.down()
var successful = false
val location = executionRequest.location
val item = WorkspaceModel.getInstance(project).getProjectModelEntity(location.id) ?: return false
val path = item.url?.toPath()?.toString() ?: return false
val model = project.solution.t4ProtocolModel
model.requestCompilation.start(project.lifetime, location).result.advise(project.lifetime) { rdTaskResult ->
try {
val result = rdTaskResult.unwrap()
successful = result.buildResultKind.isSuccess
if (executionRequest.isVisible) view.showT4BuildResult(result, path)
} finally {
finished.up()
}
}
finished.waitFor()
if (!successful) model.executionAborted.handleEndOfExecution(location)
return successful
}