func GetIdeInstallations()

in backend/analyzer/installedIDEs/InstallationsFinder.go [83:109]


func GetIdeInstallations() (ides []IDE) {
	runningIDEs := getRunningIdes()
	log.Printf("Scanning system for IDE installations")
	var installedIdes []string
	installedIdes, _ = findInstalledIdePackages()

	for _, idePackage := range installedIdes {
		info, _ := getIdeInfoByPackage(idePackage)
		binary, _ := getIdeBinaryByPackage(idePackage)
		info.LogsDirectory = getIdeLogsDir(binary)
		isRunning := checkIfInstallationRunning(runningIDEs, info)
		if info.LogsDirectory != "" {
			ides = append(ides, IDE{
				Binary:  binary,
				Package: idePackage,
				Running: isRunning,
				Info:    info,
			})
			//log.Printf("[runnning: %v] [%v] %v %v (%v-%v) - %v \n", isRunning, i, info.Name, info.Version, info.ProductCode, info.BuildNumber, beautifyPackageName(idePackage))
		}
	}
	//sort them by running state. Running ones first
	sort.Slice(ides, func(i int, j int) bool {
		return ides[i].Running
	})
	return ides
}