in Sources/PackageModel/ManifestSourceGeneration.swift [147:182]
init(from dependency: PackageDependency) {
var params: [SourceCodeFragment] = []
if let explicitName = dependency.explicitNameForTargetDependencyResolutionOnly {
params.append(SourceCodeFragment(key: "name", string: explicitName))
}
switch dependency {
case .fileSystem(let settings):
params.append(SourceCodeFragment(key: "path", string: settings.path.pathString))
case .sourceControl(let settings):
switch settings.location {
case .local(let path):
params.append(SourceCodeFragment(key: "url", string: path.pathString))
case .remote(let url):
params.append(SourceCodeFragment(key: "url", string: url.absoluteString))
}
switch settings.requirement {
case .exact(let version):
params.append(SourceCodeFragment(enum: "exact", string: "\(version)"))
case .range(let range):
params.append(SourceCodeFragment("\"\(range.lowerBound)\"..<\"\(range.upperBound)\""))
case .revision(let revision):
params.append(SourceCodeFragment(enum: "revision", string: revision))
case .branch(let branch):
params.append(SourceCodeFragment(enum: "branch", string: branch))
}
case .registry(let settings):
params.append(SourceCodeFragment(key: "identity", string: settings.identity.description))
switch settings.requirement {
case .exact(let version):
params.append(SourceCodeFragment(enum: "exact", string: "\(version)"))
case .range(let range):
params.append(SourceCodeFragment("\"\(range.lowerBound)\"..<\"\(range.upperBound)\""))
}
}
self.init(enum: "package", subnodes: params)
}