in internal/core/startup/installers.go [128:211]
func getIde(analyzer product.Analyzer) *ReleaseDownloadInfo {
dist := product.ReleaseVer
if analyzer.IsEAP() {
dist = product.EapVer
}
name := analyzer.GetLinter().Name
if !analyzer.GetLinter().SupportNative {
msg.ErrorMessage("Native mode for linter %s is not supported", name)
return nil
}
linterProperties := product.FindLinterProperties(analyzer.GetLinter())
if linterProperties == nil {
msg.ErrorMessage("Native mode for linter %s is not supported", name)
return nil
}
feedProductCode := linterProperties.FeedProductCode
prod, err := GetProductByCode(feedProductCode)
if err != nil {
msg.ErrorMessage("Error while obtaining the product info: %s", err)
return nil
}
if prod == nil {
msg.ErrorMessage("Product info is not found for code: %s", feedProductCode)
return nil
}
release := SelectLatestCompatibleRelease(prod, dist)
if release == nil {
msg.ErrorMessage("Could not find a %s version for '%s'", dist, linterProperties.PresentableName)
return nil
}
var downloadType string
switch runtime.GOOS {
case "darwin":
downloadType = "macSit"
_, ok := (*release.Downloads)[downloadType]
if !ok {
downloadType = "mac"
}
if runtime.GOARCH == "arm64" {
downloadType = "macSitM1"
_, ok := (*release.Downloads)[downloadType]
if !ok {
downloadType = "macM1"
}
}
case "windows":
downloadType = "windowsZip"
_, ok := (*release.Downloads)[downloadType]
if !ok {
downloadType = "windows"
}
if runtime.GOARCH == "arm64" {
downloadType = "windowsZipARM64"
_, ok := (*release.Downloads)[downloadType]
if !ok {
downloadType = "windowsARM64"
}
}
default:
downloadType = "linux"
if runtime.GOARCH == "arm64" {
downloadType = "linuxARM64"
}
}
res, ok := (*release.Downloads)[downloadType]
if !ok {
msg.ErrorMessage(
"%s %s (%s) is not available or not supported for the current platform",
feedProductCode,
*release.Version,
dist,
)
return nil
}
log.Debug(fmt.Sprintf("%s %s %s %s URL: %s", feedProductCode, dist, *release.Version, downloadType, res.Link))
return &res
}