func recognizeArchitectures()

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()
    }