in Sources/XCRemoteCache/Commands/Plugins/Thinning/SwiftProductsArchitecturesRecognizer.swift [42:63]
func recognizeArchitectures(builtProductsDir: URL, moduleName: String) throws -> [String] {
/// Location where Xcode puts all swiftmodules
let moduleDirectory = builtProductsDir
.appendingPathComponent(moduleName)
.appendingPathExtension(Self.SwiftmoduleDirExtension)
// Skip folders (e.g. 'Project' dir that stores .sourceinfo, introduced in Xcode13)
let productFiles = try dirAccessor.items(at: moduleDirectory).filter { url in
try dirAccessor.itemType(atPath: url.path) == .file
}
/// files in a moduleDirectory have basename corresponding to the
/// architecture (e.g. 'x86_64-apple-ios-simulator.swiftmodule', 'x86_64.swiftmodule' ...)
let architectures = productFiles.map { file -> String in
// recursively delete extensions to get rid of potential fingerprint overrides in a product directory
var basenameFile = file
while !basenameFile.pathExtension.isEmpty {
basenameFile.deletePathExtension()
}
return basenameFile.lastPathComponent
}
// remove duplicates coming from files with different extensions (swiftmodule, swiftdoc etc.)
return Set(architectures).sorted()
}