func readConfiguration()

in Sources/XCRemoteCache/Config/XCRemoteCacheConfig.swift [370:393]


    func readConfiguration() throws -> XCRemoteCacheConfig {
        let rootURL = URL(fileURLWithPath: srcRoot)
        let configURL = URL(fileURLWithPath: Self.configurationFile, relativeTo: rootURL)
        let userConfigs = try readUserConfig(configURL)
        var config = XCRemoteCacheConfig(sourceRoot: srcRoot).merged(with: userConfigs)
        var extraConfURL = URL(fileURLWithPath: config.extraConfigurationFile, relativeTo: rootURL)
        var visitedFiles = Set([configURL])
        while !visitedFiles.contains(extraConfURL) {
            do {
                let extraConfig = try readUserConfig(extraConfURL)
                debugLog("Reading extra configuration from \(extraConfURL)")
                config = config.merged(with: extraConfig)
                visitedFiles.insert(extraConfURL)
                // Advance extra configuration
                extraConfURL = URL(fileURLWithPath: config.extraConfigurationFile, relativeTo: rootURL)
            } catch {
                infoLog("Extra config override failed with \(error). Skipping extra configuration")
                // swiftlint:disable:next unneeded_break_in_switch
                break
            }
        }

        return try config.verifyAndApplyDefaults()
    }