spadafiva
(Joe Spadafora)
1
I'm working on building a tool that can run on both Linux machines (think github actions) as well as locally on a mac. I need to parse some regexes and I would like to use regex builders. I've created a basic Package.swift for the tool.
Sorry if it's already been posted here, but I wasn't sure how to get something like this working:
import RegexBuilder
struct SomeType {
var a: Int
var b: Int
}
// Xcode prompts me to add this locally,
// but how do I include
// linux as a destination
@available(macOS 13.0, *) // <<<-------
extension SomeType {
static func fromString(_ str: String) throws -> SomeType {
let aRef = Reference(Int.self)
let bRef = Reference(Int.self)
let regex = Regex {
// ...
}
let match: Regex<_>.Match = ...
return SomeType(a: match[aRef], b: match[bRef])
}
}
Do I need to specify something in the Package.swift to make this work to set a minimum version for mac and linux or is there some @available that will work for this?
Not at all sure, but this seems to be a Swift feature, more than a platform feature. Maybe it ought to be @available(swift 5.7, *) ?
spadafiva
(Joe Spadafora)
3
That probably would work, but after a little more digging wasn't what fixed it. It seems like the supported platforms only specifies minimum deployment targets (SupportedPlatform: linux not allowed? - #2 by mickael). Adding in a target for macOS resolved the issue. This doesn't restrict the allowed platforms like I would have expected.
E.g. this was the change that I needed to add the platforms key:
let package = Package(
name: "PackageName",
platforms: [
.macOS(.v13),
],
...
)
1 Like