override fun trySelect()

in plugin-dotnet-agent/src/main/kotlin/jetbrains/buildServer/dotnet/commands/nuget/NugetCredentialProviderSelectorImpl.kt [20:59]


    override fun trySelect(sdkVersion: Version): String? {
        val credentialProviderDisabled = _parametersService.tryGetParameter(ParameterType.Configuration, "teamcity.nuget.credentialprovider.disabled")?.trim()?.toBoolean() ?: false
        if (credentialProviderDisabled) {
            LOG.debug("Credentials plugin is disabled")
            return null
        }

        var sdkMajorVersion = sdkVersion.major
        if (sdkVersion == Version.Empty) {
            // for full .NET 4.6 bin\credential-plugin\net46\CredentialProvider.TeamCity.exe
            sdkMajorVersion = 4
            LOG.debug("Will use credentials plugin for .NET Framework")
        } else if (sdkVersion < Version.CredentialProviderVersion) {
            LOG.debug("Credentials plugin is not supported for SDK version $sdkVersion")
            return null
        }

        var credentialProviderPath = trySelectBySdkMajorVersion(sdkMajorVersion)
        if (credentialProviderPath == null) {
            LOG.debug("Couldn't find credential plugin matching SDK major version $sdkMajorVersion")

            if (sdkVersion != Version.Empty) {
                credentialProviderPath = if (!_virtualContext.isVirtual) {
                    trySelectByAvailableRuntimes()
                } else {
                    // no runtimes info
                    trySelectBySdkMajorVersionWithRollForward(sdkMajorVersion)
                }
            }
        }

        if (credentialProviderPath != null) {
            credentialProviderPath = _virtualContext.resolvePath(credentialProviderPath)
            LOG.debug("Credentials provider found, using $credentialProviderPath")
        } else {
            LOG.debug("Credentials provider not found")
        }

        return credentialProviderPath
    }