rainbow-dragon/Package.swift

79 lines
3.9 KiB
Swift

// swift-tools-version:6.0
import PackageDescription
let package = Package(
name: "forge",
platforms: [.macOS(.v14)],
dependencies: [
.package(url: "https://github.com/apple/swift-nio.git", from: "2.65.0"),
.package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.3.0"),
],
targets: [
// Pure color math
.target(name: "ForgeColor"),
// Node stack, flattening, serialization
.target(name: "ForgeGrade", dependencies: ["ForgeColor"]),
// Camera seam
.target(name: "ForgeCamera", dependencies: ["ForgeGrade"]),
// Simulated cameras
.target(name: "ForgeSim", dependencies: [
"ForgeCamera",
"ForgeCameraARRI", // CAP frame codec shared by ARRI sim
"ForgeOffload", // MD5 for CAP challenge verification
.product(name: "NIO", package: "swift-nio"),
.product(name: "NIOHTTP1", package: "swift-nio"),
.product(name: "NIOWebSocket", package: "swift-nio"),
]),
// Vendor drivers
.target(name: "ForgeCameraARRI", dependencies: [
"ForgeCamera",
"ForgeOffload", // MD5 for CAP password challenge
.product(name: "NIO", package: "swift-nio"),
]),
.target(name: "ForgeCameraRED", dependencies: [
"ForgeCamera",
.product(name: "NIO", package: "swift-nio"),
.product(name: "NIOHTTP1", package: "swift-nio"),
.product(name: "NIOWebSocket", package: "swift-nio"),
]),
.target(name: "ForgeCameraSony", dependencies: [
"ForgeCamera",
.product(name: "NIO", package: "swift-nio"),
]),
// Shot logging + storage + exports
.target(name: "ForgeLibrary", dependencies: ["ForgeGrade", "CSQLite"]),
.systemLibrary(name: "CSQLite", path: "Sources/CSQLite"),
.target(name: "ForgeLogger", dependencies: ["ForgeCamera", "ForgeLibrary"]),
.target(name: "ForgeExport", dependencies: ["ForgeLibrary", "ForgeGrade"]),
// Offload + proxy
.target(name: "ForgeOffload", dependencies: ["ForgeLibrary"]),
.target(name: "ForgeProxy", dependencies: ["ForgeLibrary", "ForgeGrade", "ForgeColor"]),
// Panel + video seams
.target(name: "ForgePanel", dependencies: [
"ForgeGrade",
.product(name: "NIO", package: "swift-nio"),
]),
.target(name: "ForgeVideo", dependencies: ["ForgeGrade"]),
// CLI
.executableTarget(name: "forge-cli", dependencies: [
"ForgeCamera", "ForgeCameraARRI", "ForgeCameraRED", "ForgeCameraSony",
"ForgeSim", "ForgeLogger", "ForgeExport", "ForgePanel", "ForgeVideo",
"ForgeOffload", "ForgeProxy",
.product(name: "ArgumentParser", package: "swift-argument-parser"),
]),
// Tests
.testTarget(name: "ForgeColorTests", dependencies: ["ForgeColor"]),
.testTarget(name: "ForgeGradeTests", dependencies: ["ForgeGrade"]),
.testTarget(name: "ForgeCameraTests", dependencies: ["ForgeCamera", "ForgeSim"]),
.testTarget(name: "ForgeCameraARRITests", dependencies: ["ForgeCameraARRI", "ForgeSim"]),
.testTarget(name: "ForgeCameraREDTests", dependencies: ["ForgeCameraRED", "ForgeSim"]),
.testTarget(name: "ForgeCameraSonyTests", dependencies: ["ForgeCameraSony", "ForgeSim"]),
.testTarget(name: "ForgeLibraryTests", dependencies: ["ForgeLibrary"]),
.testTarget(name: "ForgeLoggerTests", dependencies: ["ForgeLogger", "ForgeSim"]),
.testTarget(name: "ForgeExportTests", dependencies: ["ForgeExport"]),
.testTarget(name: "ForgeOffloadTests", dependencies: ["ForgeOffload"]),
.testTarget(name: "ForgeProxyTests", dependencies: ["ForgeProxy"]),
.testTarget(name: "ForgePanelTests", dependencies: ["ForgePanel"]),
.testTarget(name: "ForgeVideoTests", dependencies: ["ForgeVideo"]),
]
)