func createBuildCommands()

in FishyTransport/Plugins/FishyActorTransportPlugin/FishyPlugin.swift [19:48]


  func createBuildCommands(context: TargetBuildContext) throws -> [Command] {
    let toolName = "FishyActorsGenerator"
    let genTool = try context.tool(named: toolName)
    let generatorPath = try context.tool(named: toolName).path

    let inputFiles = context.inputFiles
        .map { $0.path }
        .filter { $0.extension?.lowercased() == "swift" }

    let buckets = 5 // # of buckets for consistent hashing
    let outputFiles = !inputFiles.isEmpty ? (0..<buckets)
        .map {
      context.pluginWorkDirectory.appending("GeneratedFishyActors_\($0).swift")
    } : []

    let command = Command.buildCommand(
        displayName: "Distributed Actors: Generating FISHY actors for \(context.targetName)",
        executable: generatorPath,
        arguments: [
          "--verbose",
          "--source-directory", context.targetDirectory.string,
          "--target-directory", context.pluginWorkDirectory.string,
          "--buckets", "\(buckets)",
        ],
        inputFiles: inputFiles,
        outputFiles: outputFiles
    )

    return [command]
  }