override fun tryCreate()

in plugin-dotnet-agent/src/main/kotlin/jetbrains/buildServer/visualStudio/VisualStudioInstanceFactory.kt [20:52]


    override fun tryCreate(path: File, baseVersion: Version, platform: Platform): ToolInstance? {
        if (!_fileSystemService.isExists(path) || !_fileSystemService.isDirectory(path)) {
            LOG.debug("Cannot find \"$path\".")
            return null
        }
        else {
            val devenvFile = File(path, "devenv.exe")
            if (!_fileSystemService.isExists(devenvFile) || !_fileSystemService.isFile(devenvFile)) {
                LOG.debug("Cannot find \"$devenvFile\".")
                return null
            }
            else {
                var curBaseVersion: Version
                var detailedVersion = _peReader.tryGetVersion(devenvFile)
                if (detailedVersion == Version.Empty) {
                    LOG.warn("Cannot get a product version from \"$devenvFile\".")
                    detailedVersion = baseVersion
                }

                curBaseVersion =
                        ProductLineVersionVersions.get(Version(baseVersion.major))
                        ?: ProductLineVersionVersions.get(Version(detailedVersion.major))
                        ?: Version.Empty

                if (curBaseVersion == Version.Empty) {
                    LOG.warn("Cannot find a product line version for $baseVersion.")
                    return null
                }

                return ToolInstance(ToolInstanceType.VisualStudio, path, detailedVersion, curBaseVersion, platform)
            }
        }
    }