fun resolveParameters()

in agent/src/main/kotlin/org/jetbrains/teamcity/vault/agent/VaultParametersResolver.kt [33:59]


    fun resolveParameters(build: AgentRunningBuild, settings: VaultFeatureSettings, vaultParameters: List<VaultParameter>, token: String, isWriteEngineEnabled: Boolean) {
        if (vaultParameters.isEmpty()) {
            return
        }

        val humanReadableParamsDesc = vaultParameters.map { vaultParameter ->
            "'param=${vaultParameter.parameterKey}, vaultQuery=${vaultParameter.vaultParameterSettings.vaultQuery}'"
        }
        val logger = build.buildLogger
        logger.message("${humanReadableParamsDesc.size} remote ${"parameter".pluralize(humanReadableParamsDesc)} to resolve: $humanReadableParamsDesc")

        val keyToQuery = vaultParameters.associate { parameter ->
            parameter.parameterKey to VaultQuery.extract(parameter.vaultParameterSettings.vaultQuery, isWriteEngineEnabled)
        }

        val replacements = resolveReplacements(build, settings, keyToQuery.values, token).replacements
        keyToQuery.forEach { (key, value) ->
            val replacement = replacements[value.full]
            if (replacement != null) {
                when {
                    key.startsWith(Constants.SYSTEM_PREFIX) -> build.addSharedSystemProperty(key.removePrefix(Constants.SYSTEM_PREFIX), replacement)
                    key.startsWith(Constants.ENV_PREFIX) -> build.addSharedEnvironmentVariable(key.removePrefix(Constants.ENV_PREFIX), replacement)
                    else -> build.addSharedConfigParameter(key, replacement)
                }
            }
        }
    }