1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift open source project
//
// Copyright (c) 2014-2020 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
import PackageGraph
import PackageModel
public struct MockTarget {
public enum `Type` {
case regular, test, binary
}
public let name: String
public let dependencies: [TargetDescription.Dependency]
public let path: String?
public let url: String?
public let checksum: String?
public let packageAccess: Bool
public let settings: [TargetBuildSettingDescription.Setting]
public let type: Type
public init(
name: String,
dependencies: [TargetDescription.Dependency] = [],
type: Type = .regular,
path: String? = nil,
url: String? = nil,
packageAccess: Bool = true,
settings: [TargetBuildSettingDescription.Setting] = [],
checksum: String? = nil
) throws {
self.name = name
self.dependencies = dependencies
self.type = type
self.path = path
self.url = url
self.packageAccess = packageAccess
self.settings = settings
self.checksum = checksum
}
func convert(identityResolver: IdentityResolver) throws -> TargetDescription {
switch self.type {
case .regular:
return try TargetDescription(
name: self.name,
dependencies: self.dependencies.map{ try $0.convert(identityResolver: identityResolver) },
path: self.path,
exclude: [],
sources: nil,
publicHeadersPath: nil,
type: .regular,
packageAccess: packageAccess,
settings: self.settings
)
case .test:
return try TargetDescription(
name: self.name,
dependencies: self.dependencies.map{ try $0.convert(identityResolver: identityResolver) },
path: self.path,
exclude: [],
sources: nil,
publicHeadersPath: nil,
type: .test,
packageAccess: packageAccess,
settings: self.settings
)
case .binary:
return try TargetDescription(
name: self.name,
dependencies: self.dependencies.map{ try $0.convert(identityResolver: identityResolver) },
path: self.path,
url: self.url,
exclude: [],
sources: nil,
publicHeadersPath: nil,
type: .binary,
packageAccess: packageAccess,
settings: [],
checksum: self.checksum
)
}
}
}
extension TargetDescription.Dependency {
func convert(identityResolver: IdentityResolver) throws -> Self {
switch self {
case .product(let name, let package, let moduleAliases, let condition):
return .product(
name: name,
package: try package.flatMap { try identityResolver.mappedIdentity(for: .plain($0)).description },
moduleAliases: moduleAliases,
condition: condition
)
default:
return self
}
}
}
|