Добавление swift-docc-plugin в мой проект приводит к сбою сборки Swift 5.5

У меня есть проект , в который я недавно добавил swift-docc-plugin, чтобы я мог экспортировать документацию DocC как статический веб-сайт.

      // swift-tools-version:5.5
import PackageDescription

let package = Package(
  name: "Saga",
  platforms: [
    .macOS(.v12)
  ],
  products: [
    .library(name: "Saga", targets: ["Saga"]),
    .executable(name: "watch", targets: ["SagaCLI"])
  ],
  dependencies: [
    .package(url: "https://github.com/kylef/PathKit", from: "1.0.1"),
    .package(url: "https://github.com/JohnSundell/Codextended.git", from: "0.1.0"),
    .package(url: "https://github.com/apple/swift-docc-plugin.git", branch: "main"),
  ],
  targets: [
    .target(
      name: "Saga",
      dependencies: [
        "PathKit",
        "Codextended",
      ]
    ),
    .executableTarget(
      name: "SagaCLI",
      dependencies: ["PathKit"]
    ),
    .testTarget(
      name: "SagaTests",
      dependencies: ["Saga"]
    ),
  ]
)

Проблема в том, что в Swift Package Index все сборки на Swift 5.5 и ниже не работают:

error: package at 'https://github.com/apple/swift-docc-plugin.git' @ 859caac534e94ace18b894ccd9ed301ae4aeda84 is using Swift tools version 5.6.0 but the installed version is 5.5.0 in https://github.com/apple/swift-docc-plugin.git

См. https://swiftpackageindex.com/builds/1DF06709-E2CA-4F56-B793-9CC7C8FC0A9D для полного журнала сборки.

Как мне это решить? Думаю, я мог бы удалить swift-docc-plugin из зависимостей и добавлять его каждый раз, когда хочу экспортировать документы, но это кажется смехотворно раздражающим обходным путем. Я действительно не хочу увеличивать минимальную версию моей библиотеки только из-за swift-docc-plugin.

2 ответа

В конце концов решение оказалось довольно простым. Просто добавьте это в конец Package.swift

      #if swift(>=5.6)
package.dependencies += [
    .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0")
  ]
#endif

К сожалению, я не думаю, что есть способ обойти это из-за того, как мы тестируем пакет, собирая его.

Вот еще подробности: https://github.com/SwiftPackageIndex/SwiftPackageIndex-Server/issues/1633#issuecomment-1075899345

Другие вопросы по тегам