override fun executeTask()

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
  }