suspend fun expandAndShardTargets()

in server/server/src/main/kotlin/org/jetbrains/bazel/server/sync/sharding/BazelBuildTargetSharder.kt [45:102]


  suspend fun expandAndShardTargets(
    pathResolver: BazelPathsResolver,
    bazelInfo: BazelInfo,
    targets: TargetCollection,
    context: WorkspaceContext,
    featureFlags: FeatureFlags,
    bazelRunner: BazelRunner,
    bspClientLogger: BspClientLogger,
    firstPhaseProject: PhasedSyncProject?,
  ): ShardedTargetsResult {
    if (firstPhaseProject != null) {
      return ShardedTargetsResult(
        shardTargetsToBatches(firstPhaseProject.modules.keys.toList(), emptyList(), getTargetShardSize(context)),
        BazelStatus.SUCCESS,
      )
    }
    val includes = targets.values
    val excludes = targets.excludedValues
    val shardingApproach = getShardingApproach(context)
    return when (shardingApproach) {
      ShardingApproach.SHARD_ONLY ->
        ShardedTargetsResult(
          shardTargetsToBatches(includes, excludes, getTargetShardSize(context)),
          BazelStatus.SUCCESS,
        )

      ShardingApproach.QUERY_AND_SHARD -> {
        val singleTargets =
          WildcardTargetExpander.queryIndividualTargets(includes, excludes, bazelRunner, context)
        ShardedTargetsResult(
          shardTargetsToBatches(singleTargets.singleTargets, emptyList(), getTargetShardSize(context)),
          singleTargets.buildResult,
        )
      }

      ShardingApproach.EXPAND_AND_SHARD -> {
        val expandedTargets =
          expandWildcardTargets(
            pathResolver,
            bazelInfo,
            includes,
            excludes,
            bazelRunner,
            bspClientLogger,
            context,
            featureFlags,
          )
        if (expandedTargets.buildResult == BazelStatus.FATAL_ERROR) {
          ShardedTargetsResult(ShardedTargetList(emptyList()), expandedTargets.buildResult)
        } else {
          ShardedTargetsResult(
            shardTargetsToBatches(expandedTargets.singleTargets, emptyList(), getTargetShardSize(context)),
            expandedTargets.buildResult,
          )
        }
      }
    }
  }