mirror of https://github.com/Radarr/Radarr
50 lines
2.0 KiB
C#
50 lines
2.0 KiB
C#
using System.Linq;
|
|
using System.Runtime.InteropServices;
|
|
using NzbDrone.Common.EnvironmentInfo;
|
|
using NzbDrone.Common.Processes;
|
|
using NzbDrone.Core.Localization;
|
|
|
|
namespace NzbDrone.Core.HealthCheck.Checks
|
|
{
|
|
public class MonoNotNetCoreCheck : HealthCheckBase
|
|
{
|
|
private static string[] MonoUnames = new string[] { "OpenBSD", "MidnightBSD", "NetBSD" };
|
|
private readonly IProcessProvider _processProvider;
|
|
|
|
public MonoNotNetCoreCheck(IProcessProvider processProvider,
|
|
ILocalizationService localizationService)
|
|
: base(localizationService)
|
|
{
|
|
_processProvider = processProvider;
|
|
}
|
|
|
|
public override HealthCheck Check()
|
|
{
|
|
if (!PlatformInfo.IsMono)
|
|
{
|
|
return new HealthCheck(GetType());
|
|
}
|
|
|
|
// Don't warn on linux x86 - we don't build x86 net core
|
|
if (OsInfo.IsLinux && RuntimeInformation.ProcessArchitecture == Architecture.X86)
|
|
{
|
|
return new HealthCheck(GetType(), HealthCheckResult.Error, _localizationService.GetLocalizedString("Monox86SupportCheckMessage"), "#mono-support-end-of-life");
|
|
}
|
|
|
|
// Check for BSD
|
|
var output = _processProvider.StartAndCapture("uname");
|
|
if (output?.ExitCode == 0 && MonoUnames.Contains(output?.Lines.First().Content))
|
|
{
|
|
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("MonoBSDSupportCheckMessage"), OsInfo.Os), "#mono-support-end-of-life");
|
|
}
|
|
|
|
return new HealthCheck(GetType(),
|
|
HealthCheckResult.Error,
|
|
_localizationService.GetLocalizedString("MonoNotNetCoreCheckMessage"),
|
|
"#update-to-net-core-version");
|
|
}
|
|
|
|
public override bool CheckOnSchedule => false;
|
|
}
|
|
}
|