Files
XcodeGen/Sources/ProjectSpec/XCProjExtensions.swift
2019-11-10 11:56:23 +11:00

67 lines
1.6 KiB
Swift

import Foundation
import PathKit
import XcodeProj
extension PBXProductType {
init?(string: String) {
if let type = PBXProductType(rawValue: string) {
self = type
} else if let type = PBXProductType(rawValue: "com.apple.product-type.\(string)") {
self = type
} else {
return nil
}
}
public var isFramework: Bool {
self == .framework || self == .staticFramework
}
public var isLibrary: Bool {
self == .staticLibrary || self == .dynamicLibrary
}
public var isExtension: Bool {
fileExtension == "appex"
}
public var isApp: Bool {
fileExtension == "app"
}
public var isTest: Bool {
fileExtension == "xctest"
}
public var isExecutable: Bool {
isApp || isExtension || isTest || self == .commandLineTool
}
public var name: String {
rawValue.replacingOccurrences(of: "com.apple.product-type.", with: "")
}
}
extension Platform {
public var emoji: String {
switch self {
case .iOS: return "📱"
case .watchOS: return "⌚️"
case .tvOS: return "📺"
case .macOS: return "🖥"
}
}
}
extension XCScheme.CommandLineArguments {
// Dictionary is a mapping from argument name and if it is enabled by default
public convenience init(_ dict: [String: Bool]) {
let args = dict.map { tuple in
XCScheme.CommandLineArguments.CommandLineArgument(name: tuple.key, enabled: tuple.value)
}.sorted { $0.name < $1.name }
self.init(arguments: args)
}
}