You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
17 lines
751 B
17 lines
751 B
/// Parses `--route "<NDI name>=<screen index>"` launch arguments (for scripted tests until scenes exist).
|
|
public enum RouteArgument {
|
|
public struct Parsed: Equatable, Sendable {
|
|
public var ndiName: String
|
|
public var screenIndex: Int
|
|
}
|
|
|
|
public static func parse(_ arguments: [String]) -> [Parsed] {
|
|
zip(arguments, arguments.dropFirst()).compactMap { flag, value in
|
|
guard flag == "--route", let separator = value.lastIndex(of: "=") else { return nil }
|
|
let name = String(value[..<separator])
|
|
guard !name.isEmpty, let index = Int(value[value.index(after: separator)...]), index >= 0 else { return nil }
|
|
return Parsed(ndiName: name, screenIndex: index)
|
|
}
|
|
}
|
|
}
|