in Sources/PackageModel/ManifestSourceGeneration.swift [217:308]
init(from target: TargetDescription) {
var params: [SourceCodeFragment] = []
params.append(SourceCodeFragment(key: "name", string: target.name))
if let pluginCapability = target.pluginCapability {
let node = SourceCodeFragment(from: pluginCapability)
params.append(SourceCodeFragment(key: "capability", subnode: node))
}
if !target.dependencies.isEmpty {
let nodes = target.dependencies.map{ SourceCodeFragment(from: $0) }
params.append(SourceCodeFragment(key: "dependencies", subnodes: nodes))
}
if let path = target.path {
params.append(SourceCodeFragment(key: "path", string: path))
}
if let url = target.url {
params.append(SourceCodeFragment(key: "url", string: url))
}
if !target.exclude.isEmpty {
params.append(SourceCodeFragment(key: "exclude", strings: target.exclude))
}
if let sources = target.sources, !sources.isEmpty {
params.append(SourceCodeFragment(key: "sources", strings: sources))
}
if !target.resources.isEmpty {
let nodes = target.resources.map{ SourceCodeFragment(from: $0) }
params.append(SourceCodeFragment(key: "resources", subnodes: nodes))
}
if let publicHeadersPath = target.publicHeadersPath {
params.append(SourceCodeFragment(key: "publicHeadersPath", string: publicHeadersPath))
}
if let pkgConfig = target.pkgConfig {
params.append(SourceCodeFragment(key: "pkgConfig", string: pkgConfig))
}
if let systemPackageProviders = target.providers, !systemPackageProviders.isEmpty {
let nodes = systemPackageProviders.map{ SourceCodeFragment(from: $0) }
params.append(SourceCodeFragment(key: "providers", subnodes: nodes))
}
let cSettings = target.settings.filter{ $0.tool == .c }
if !cSettings.isEmpty {
let nodes = cSettings.map{ SourceCodeFragment(from: $0) }
params.append(SourceCodeFragment(key: "cSettings", subnodes: nodes))
}
let cxxSettings = target.settings.filter{ $0.tool == .cxx }
if !cxxSettings.isEmpty {
let nodes = cxxSettings.map{ SourceCodeFragment(from: $0) }
params.append(SourceCodeFragment(key: "cxxSettings", subnodes: nodes))
}
let swiftSettings = target.settings.filter{ $0.tool == .swift }
if !swiftSettings.isEmpty {
let nodes = swiftSettings.map{ SourceCodeFragment(from: $0) }
params.append(SourceCodeFragment(key: "swiftSettings", subnodes: nodes))
}
let linkerSettings = target.settings.filter{ $0.tool == .linker }
if !linkerSettings.isEmpty {
let nodes = linkerSettings.map{ SourceCodeFragment(from: $0) }
params.append(SourceCodeFragment(key: "linkerSettings", subnodes: nodes))
}
if let checksum = target.checksum {
params.append(SourceCodeFragment(key: "checksum", string: checksum))
}
switch target.type {
case .regular:
self.init(enum: "target", subnodes: params, multiline: true)
case .executable:
self.init(enum: "executableTarget", subnodes: params, multiline: true)
case .test:
self.init(enum: "testTarget", subnodes: params, multiline: true)
case .system:
self.init(enum: "systemLibrary", subnodes: params, multiline: true)
case .binary:
self.init(enum: "binaryTarget", subnodes: params, multiline: true)
case .plugin:
self.init(enum: "plugin", subnodes: params, multiline: true)
}
}