mirror of
https://github.com/yonaskolb/XcodeGen.git
synced 2024-09-20 09:08:46 +03:00
change Target.Dependency to a struct with embed
This commit is contained in:
parent
66a78b6165
commit
1ef53e39f0
@ -194,31 +194,44 @@ extension Target: JSONObjectConvertible {
|
||||
}
|
||||
}
|
||||
|
||||
public enum Dependency: Equatable {
|
||||
public struct Dependency: Equatable {
|
||||
|
||||
case target(String)
|
||||
case framework(String)
|
||||
case carthage(String)
|
||||
public let type: DependencyType
|
||||
public let reference: String
|
||||
public let embed: Bool?
|
||||
|
||||
public init(type: DependencyType, reference: String, embed: Bool? = nil) {
|
||||
self.type = type
|
||||
self.reference = reference
|
||||
self.embed = embed
|
||||
}
|
||||
|
||||
public enum DependencyType {
|
||||
case target
|
||||
case framework
|
||||
case carthage
|
||||
}
|
||||
|
||||
public static func ==(lhs: Dependency, rhs: Dependency) -> Bool {
|
||||
switch (lhs, rhs) {
|
||||
case let (.target(lhs), .target(rhs)): return lhs == rhs
|
||||
case let (.framework(lhs), .framework(rhs)): return lhs == rhs
|
||||
case let (.carthage(lhs), .carthage(rhs)): return lhs == rhs
|
||||
default: return false
|
||||
}
|
||||
return lhs.reference == rhs.reference &&
|
||||
lhs.type == rhs.type &&
|
||||
lhs.embed == rhs.embed
|
||||
}
|
||||
}
|
||||
|
||||
extension Dependency: JSONObjectConvertible {
|
||||
|
||||
public init(jsonDictionary: JSONDictionary) throws {
|
||||
embed = jsonDictionary.json(atKeyPath: "embed")
|
||||
if let target: String = jsonDictionary.json(atKeyPath: "target") {
|
||||
self = .target(target)
|
||||
type = .target
|
||||
reference = target
|
||||
} else if let framework: String = jsonDictionary.json(atKeyPath: "framework") {
|
||||
self = .framework(framework)
|
||||
type = .framework
|
||||
reference = framework
|
||||
} else if let carthage: String = jsonDictionary.json(atKeyPath: "carthage") {
|
||||
self = .carthage(carthage)
|
||||
type = .carthage
|
||||
reference = carthage
|
||||
} else {
|
||||
throw ProjectSpecError.invalidDependency(jsonDictionary)
|
||||
}
|
||||
|
@ -203,8 +203,9 @@ public class PBXProjGenerator {
|
||||
var extensions: [String] = []
|
||||
|
||||
for dependancy in target.dependencies {
|
||||
switch dependancy {
|
||||
case let .target(dependencyTargetName):
|
||||
switch dependancy.type {
|
||||
case .target:
|
||||
let dependencyTargetName = dependancy.reference
|
||||
guard let dependencyTarget = spec.getTarget(dependencyTargetName) else { continue }
|
||||
let dependencyFileReference = targetFileReferences[dependencyTargetName]!
|
||||
|
||||
@ -235,15 +236,15 @@ public class PBXProjGenerator {
|
||||
}
|
||||
}
|
||||
|
||||
case let .framework(framework):
|
||||
let fileReference = getFileReference(path: Path(framework), inPath: basePath)
|
||||
case .framework:
|
||||
let fileReference = getFileReference(path: Path(dependancy.reference), inPath: basePath)
|
||||
let buildFile = PBXBuildFile(reference: generateUUID(PBXBuildFile.self, fileReference + target.name), fileRef: fileReference)
|
||||
addObject(buildFile)
|
||||
targetFrameworkBuildFiles.append(buildFile.reference)
|
||||
if !frameworkFiles.contains(fileReference) {
|
||||
frameworkFiles.append(fileReference)
|
||||
}
|
||||
case let .carthage(carthage):
|
||||
case .carthage:
|
||||
if carthageFrameworksByPlatform[target.platform.rawValue] == nil {
|
||||
carthageFrameworksByPlatform[target.platform.rawValue] = []
|
||||
}
|
||||
|
@ -58,8 +58,8 @@ public class ProjectGenerator {
|
||||
|
||||
for target in spec.targets {
|
||||
for dependency in target.dependencies {
|
||||
if case let .target(targetName) = dependency, spec.getTarget(targetName) == nil {
|
||||
errors.append(.invalidTargetDependency(target: target.name, dependency: targetName))
|
||||
if dependency.type == .target, spec.getTarget(dependency.reference) == nil {
|
||||
errors.append(.invalidTargetDependency(target: target.name, dependency: dependency.reference))
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user