in Source/RiderSourceCodeAccess/Private/RiderPathLocator/Linux/RiderPathLocatorLinux.cpp [122:159]
static TArray<FInstallInfo> GetInstalledRidersWithLocate()
{
int32 ReturnCode;
FString OutResults;
FString OutErrors;
if (!FPaths::FileExists(TEXT("/usr/bin/locate")))
{
return {};
}
FPlatformProcess::ExecProcess(TEXT("/usr/bin/locate"), TEXT("-e bin/rider.sh"), &ReturnCode, &OutResults, &OutErrors);
if (ReturnCode != 0)
{
return {};
}
TArray<FString> RiderPaths;
FString TmpString;
while(OutResults.Split(TEXT("\n"), &TmpString, &OutResults))
{
if(TmpString.Contains(TEXT("snapd")) || TmpString.Contains(TEXT(".local")) || TmpString.Contains(TEXT("/opt")))
{
continue;
}
RiderPaths.Add(TmpString);
}
TArray<FInstallInfo> Result;
for(const FString& RiderPath: RiderPaths)
{
TOptional<FInstallInfo> InstallInfo = FRiderPathLocator::GetInstallInfoFromRiderPath(RiderPath, FInstallInfo::EInstallType::Installed);
if(InstallInfo.IsSet())
{
Result.Add(InstallInfo.GetValue());
}
}
return Result;
}