init()

in Sources/XCRemoteCache/Commands/Prebuild/PrebuildContext.swift [57:83]


    init(_ config: XCRemoteCacheConfig, env: [String: String]) throws {
        targetTempDir = try env.readEnv(key: "TARGET_TEMP_DIR")
        productsDir = try env.readEnv(key: "BUILT_PRODUCTS_DIR")
        moduleName = env.readEnv(key: "PRODUCT_MODULE_NAME")
        let srcRoot: URL = try env.readEnv(key: "SRCROOT")
        remoteCommitLocation = URL(fileURLWithPath: config.remoteCommitFile, relativeTo: srcRoot)
        remoteCommit = RemoteCommitInfo(try? String(contentsOf: remoteCommitLocation).trim())
        guard let address = URL(string: config.recommendedCacheAddress) else {
            throw PrebuildContextError.invalidAddress(config.recommendedCacheAddress)
        }
        recommendedCacheAddress = address
        let targetName: String = try env.readEnv(key: "TARGET_NAME")
        forceCached = !config.focusedTargets.isEmpty && !config.focusedTargets.contains(targetName)
        compilationHistoryFile = targetTempDir.appendingPathComponent(config.compilationHistoryFile)
        turnOffRemoteCacheOnFirstTimeout = config.turnOffRemoteCacheOnFirstTimeout
        self.targetName = targetName
        let thinFocusedTargetsString: String? = env.readEnv(key: "SPT_XCREMOTE_CACHE_THINNED_TARGETS")
        thinnedTargets = thinFocusedTargetsString?.split(separator: ",").map(String.init)
        /// Note: The file has yaml extension, even it is in the json format
        overlayHeadersPath = targetTempDir.appendingPathComponent("all-product-headers.yaml")
        disabled = try env.readEnv(key: "XCRC_DISABLED") ?? false
        let llbuildId: String = try env.readEnv(key: "LLBUILD_BUILD_ID")
        llbuildIdLockFile = SwiftFrontendContext.buildLlbuildIdSharedLockUrl(
            llbuildId: llbuildId,
            tmpDir: targetTempDir
        )
    }