mirror of
https://github.com/xtool-org/xtool.git
synced 2026-06-24 12:21:34 +02:00
7f151a9c66
Previously, we would clear xtool's temporary directory on startup. This (practically) meant you couldn't have multiple instances running in parallel, because the second instance could delete the first instance's temp resources while the first instance still needed them. Fix this by having xtool instances declare locks on their temporary directories.
179 lines
7.0 KiB
Swift
179 lines
7.0 KiB
Swift
// swift-tools-version:6.0
|
|
|
|
import PackageDescription
|
|
|
|
let xtoolVersion: String? = {
|
|
if let explicitVersion = Context.environment["XTOOL_VERSION"] {
|
|
return explicitVersion
|
|
} else if let info = Context.gitInformation {
|
|
let gitCommit = info.currentCommit
|
|
let gitTag = info.currentTag
|
|
let gitRef = gitTag ?? "commit \(gitCommit)"
|
|
return "\(gitRef)\(info.hasUncommittedChanges ? " (dirty)" : "")"
|
|
} else {
|
|
return nil
|
|
}
|
|
}()
|
|
|
|
let cSettings: [CSetting] = [
|
|
.define("_GNU_SOURCE", .when(platforms: [.linux])),
|
|
]
|
|
|
|
let package = Package(
|
|
name: "xtool",
|
|
platforms: [
|
|
.iOS(.v16),
|
|
.macOS(.v13),
|
|
],
|
|
products: [
|
|
.library(
|
|
name: "XKit",
|
|
targets: ["XKit"]
|
|
),
|
|
.library(
|
|
name: "XToolSupport",
|
|
targets: ["XToolSupport"]
|
|
),
|
|
.executable(
|
|
name: "xtool",
|
|
targets: ["xtool"]
|
|
),
|
|
],
|
|
dependencies: [
|
|
.package(url: "https://github.com/xtool-org/xtool-core", .upToNextMinor(from: "1.4.0")),
|
|
.package(url: "https://github.com/xtool-org/SwiftyMobileDevice", .upToNextMinor(from: "1.5.0")),
|
|
.package(url: "https://github.com/xtool-org/zsign", .upToNextMinor(from: "1.7.0")),
|
|
|
|
.package(url: "https://github.com/apple/swift-system", from: "1.4.0"),
|
|
.package(url: "https://github.com/apple/swift-http-types", from: "1.3.1"),
|
|
.package(url: "https://github.com/apple/swift-certificates", from: "1.0.0"),
|
|
.package(url: "https://github.com/apple/swift-crypto", from: "4.5.0"),
|
|
.package(url: "https://github.com/apple/swift-argument-parser", from: "1.5.0"),
|
|
.package(url: "https://github.com/apple/swift-openapi-generator", from: "1.6.0"),
|
|
.package(url: "https://github.com/apple/swift-openapi-runtime", from: "1.0.0"),
|
|
.package(url: "https://github.com/apple/swift-openapi-urlsession", from: "1.0.0"),
|
|
.package(url: "https://github.com/apple/swift-nio", from: "2.77.0"),
|
|
|
|
.package(url: "https://github.com/swiftlang/swift-docc-plugin", from: "1.0.0"),
|
|
|
|
.package(url: "https://github.com/swift-server/async-http-client.git", from: "1.23.0"),
|
|
.package(url: "https://github.com/swift-server/swift-openapi-async-http-client", from: "1.0.0"),
|
|
.package(url: "https://github.com/vapor/websocket-kit.git", from: "2.15.0"),
|
|
|
|
.package(url: "https://github.com/pointfreeco/swift-concurrency-extras", from: "1.3.0"),
|
|
.package(url: "https://github.com/pointfreeco/swift-dependencies", from: "1.6.2"),
|
|
|
|
.package(url: "https://github.com/attaswift/BigInt", from: "5.5.0"),
|
|
.package(url: "https://github.com/mxcl/Version", from: "2.1.0"),
|
|
.package(url: "https://github.com/jpsim/Yams", from: "5.1.3"),
|
|
.package(url: "https://github.com/saagarjha/unxip", from: "3.2.0"),
|
|
|
|
// TODO: just depend on tuist/XcodeProj instead
|
|
.package(url: "https://github.com/yonaskolb/XcodeGen", from: "2.45.4"),
|
|
],
|
|
targets: [
|
|
.systemLibrary(name: "XADI"),
|
|
.target(
|
|
name: "CXKit",
|
|
dependencies: [
|
|
.product(name: "OpenSSL", package: "xtool-core")
|
|
],
|
|
cSettings: cSettings + (
|
|
xtoolVersion
|
|
.map { [.define("XTOOL_VERSION", to: "\"\($0)\"")] }
|
|
?? []
|
|
)
|
|
),
|
|
.target(
|
|
name: "DeveloperAPI",
|
|
dependencies: [
|
|
.product(name: "OpenAPIRuntime", package: "swift-openapi-runtime"),
|
|
],
|
|
exclude: ["openapi-generator-config.yaml", "patch.js"]
|
|
),
|
|
// common utilities shared across xtool targets
|
|
.target(
|
|
name: "XUtils",
|
|
dependencies: [
|
|
.product(name: "SystemPackage", package: "swift-system"),
|
|
]
|
|
),
|
|
.target(
|
|
name: "XKit",
|
|
dependencies: [
|
|
"DeveloperAPI",
|
|
"CXKit",
|
|
"XUtils",
|
|
.byName(name: "XADI", condition: .when(platforms: [.linux])),
|
|
.product(name: "ConcurrencyExtras", package: "swift-concurrency-extras"),
|
|
.product(name: "Dependencies", package: "swift-dependencies"),
|
|
.product(name: "SwiftyMobileDevice", package: "SwiftyMobileDevice"),
|
|
.product(name: "Zupersign", package: "zsign"),
|
|
.product(name: "SignerSupport", package: "xtool-core"),
|
|
.product(name: "ProtoCodable", package: "xtool-core"),
|
|
.product(name: "Superutils", package: "xtool-core"),
|
|
.product(name: "Crypto", package: "swift-crypto"),
|
|
.product(name: "_CryptoExtras", package: "swift-crypto"),
|
|
.product(name: "X509", package: "swift-certificates"),
|
|
.product(name: "BigInt", package: "BigInt"),
|
|
.product(name: "HTTPTypes", package: "swift-http-types"),
|
|
.product(name: "HTTPTypesFoundation", package: "swift-http-types"),
|
|
.product(name: "OpenAPIURLSession", package: "swift-openapi-urlsession"),
|
|
.product(
|
|
name: "OpenAPIAsyncHTTPClient",
|
|
package: "swift-openapi-async-http-client",
|
|
condition: .when(platforms: [.linux])
|
|
),
|
|
.product(
|
|
name: "AsyncHTTPClient",
|
|
package: "async-http-client",
|
|
condition: .when(platforms: [.linux])
|
|
),
|
|
.product(
|
|
name: "WebSocketKit",
|
|
package: "websocket-kit",
|
|
condition: .when(platforms: [.linux])
|
|
),
|
|
],
|
|
cSettings: cSettings
|
|
),
|
|
.testTarget(
|
|
name: "XToolTests",
|
|
dependencies: [
|
|
"XToolSupport",
|
|
]
|
|
),
|
|
.target(
|
|
name: "XToolSupport",
|
|
dependencies: [
|
|
"SwiftyMobileDevice",
|
|
"XKit",
|
|
"PackLib",
|
|
.product(name: "ArgumentParser", package: "swift-argument-parser"),
|
|
.product(name: "SystemPackage", package: "swift-system"),
|
|
.product(name: "NIOPosix", package: "swift-nio"),
|
|
.product(name: "Version", package: "Version"),
|
|
.product(name: "libunxip", package: "unxip"),
|
|
],
|
|
cSettings: cSettings
|
|
),
|
|
.target(
|
|
name: "PackLib",
|
|
dependencies: [
|
|
"XUtils",
|
|
.product(name: "Yams", package: "Yams"),
|
|
.product(name: "XcodeGenKit", package: "XcodeGen", condition: .when(platforms: [.macOS])),
|
|
]
|
|
),
|
|
.executableTarget(
|
|
name: "xtool",
|
|
dependencies: [
|
|
"SwiftyMobileDevice",
|
|
"XKit",
|
|
"XToolSupport",
|
|
],
|
|
cSettings: cSettings
|
|
),
|
|
]
|
|
)
|