in Sources/PackageModel/ManifestSourceGeneration.swift [67:123]
init(from manifest: Manifest, customProductTypeSourceGenerator: ManifestCustomProductTypeSourceGenerator?) rethrows {
var params: [SourceCodeFragment] = []
params.append(SourceCodeFragment(key: "name", string: manifest.displayName))
if let defaultLoc = manifest.defaultLocalization {
params.append(SourceCodeFragment(key: "defaultLocalization", string: defaultLoc))
}
if !manifest.platforms.isEmpty {
let nodes = manifest.platforms.map{ SourceCodeFragment(from: $0) }
params.append(SourceCodeFragment(key: "platforms", subnodes: nodes))
}
if let pkgConfig = manifest.pkgConfig {
params.append(SourceCodeFragment(key: "pkgConfig", string: pkgConfig))
}
if let systemPackageProviders = manifest.providers, !systemPackageProviders.isEmpty {
let nodes = systemPackageProviders.map{ SourceCodeFragment(from: $0) }
params.append(SourceCodeFragment(key: "providers", subnodes: nodes))
}
if !manifest.products.isEmpty {
let nodes = try manifest.products.map{ try SourceCodeFragment(from: $0, customProductTypeSourceGenerator: customProductTypeSourceGenerator) }
params.append(SourceCodeFragment(key: "products", subnodes: nodes))
}
if !manifest.dependencies.isEmpty {
let nodes = manifest.dependencies.map{ SourceCodeFragment(from: $0) }
params.append(SourceCodeFragment(key: "dependencies", subnodes: nodes))
}
if !manifest.targets.isEmpty {
let nodes = manifest.targets.map{ SourceCodeFragment(from: $0) }
params.append(SourceCodeFragment(key: "targets", subnodes: nodes))
}
if let swiftLanguageVersions = manifest.swiftLanguageVersions {
let nodes = swiftLanguageVersions.map{ SourceCodeFragment(from: $0) }
params.append(SourceCodeFragment(key: "swiftLanguageVersions", subnodes: nodes, multiline: false))
}
if let cLanguageStandard = manifest.cLanguageStandard {
// NOTE: This could be cleaned up to use the nicer accessors.
let node = SourceCodeFragment("CLanguageStandard", delimiters: .parentheses, multiline: false, subnodes: [SourceCodeFragment(key: "rawValue", string: cLanguageStandard)])
params.append(SourceCodeFragment(key: "cLanguageStandard", subnode: node))
}
if let cxxLanguageStandard = manifest.cxxLanguageStandard {
// NOTE: This could be cleaned up to use the nicer accessors.
let node = SourceCodeFragment("CXXLanguageStandard", delimiters: .parentheses, multiline: false, subnodes: [SourceCodeFragment(key: "rawValue", string: cxxLanguageStandard)])
params.append(SourceCodeFragment(key: "cxxLanguageStandard", subnode: node))
}
self.init("Package", delimiters: .parentheses, subnodes: params)
}