in plugin-dotnet-agent/src/main/kotlin/jetbrains/buildServer/dotnet/discovery/dotnetFramework/DotnetSetupRegistryVisitor.kt [66:140]
override fun visit(value: WindowsRegistryValue): Boolean {
val bitness = value.key.bitness
if (value.key.parts.size == Deep + 2) {
val subKey = value.key.parts.takeLast(2)
val key = subKey[0].lowercase()
val name = subKey[1].lowercase()
if (value.type == WindowsRegistryValueType.Str && value.text.isNotBlank() && key.startsWith("v")) {
when (key) {
"v3.0" -> {
when (name) {
VersionName -> {
val framework = _frameworks.getOrPut(key) { Framework(bitness) }
framework.version = Version.parse(value.text)
_environment.tryGetRoot(value.key.bitness)?.let { installRoot ->
framework.path = File(installRoot, key)
}
}
}
}
"v3.5" -> {
when (name) {
VersionName -> {
val framework = _frameworks.getOrPut(key) { Framework(bitness) }
framework.version = Version.parse(value.text)
if (framework.path == null) {
_environment.tryGetRoot(value.key.bitness)?.let { installRoot ->
framework.path = File(installRoot, key)
}
}
}
InstallPathName -> {
val framework = _frameworks.getOrPut(key) { Framework(bitness) }
framework.path = if (value.text.isNotBlank()) File(value.text) else null
}
}
}
}
}
}
if (value.key.parts.size == Deep + 3) {
val subKey = value.key.parts.takeLast(3)
val key = subKey[0].lowercase()
val versionType = subKey[1]
val name = subKey[2]
if (key.equals("v4") && versionType.equals("Full", true)) {
when (name.lowercase()) {
VersionName -> {
if (value.type == WindowsRegistryValueType.Str && value.text.isNotBlank()) {
val framework = _frameworks.getOrPut(key) { Framework(bitness) }
framework.version = Version.parse(value.text)
}
}
InstallPathName -> {
if (value.type == WindowsRegistryValueType.Str && value.text.isNotBlank()) {
val framework = _frameworks.getOrPut(key) { Framework(bitness) }
framework.path = if (value.text.isNotBlank()) File(value.text) else null
}
}
ReleaseName -> {
if (value.type == WindowsRegistryValueType.Int && value.number != 0L) {
val framework = _frameworks.getOrPut(key) { Framework(bitness) }
framework.release = getFrameworkVersion(value.number)
}
}
}
}
}
return true
}