You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
using System.Linq;
|
|
|
|
using System.Text.RegularExpressions;
|
|
|
|
using NzbDrone.Common.Disk;
|
|
|
|
using NzbDrone.Common.EnvironmentInfo;
|
|
|
|
|
|
|
|
namespace NzbDrone.Mono.EnvironmentInfo.VersionAdapters
|
|
|
|
{
|
|
|
|
public class ReleaseFileVersionAdapter : IOsVersionAdapter
|
|
|
|
{
|
|
|
|
private readonly IDiskProvider _diskProvider;
|
|
|
|
|
|
|
|
public ReleaseFileVersionAdapter(IDiskProvider diskProvider)
|
|
|
|
{
|
|
|
|
_diskProvider = diskProvider;
|
|
|
|
}
|
|
|
|
|
|
|
|
public OsVersionModel Read()
|
|
|
|
{
|
|
|
|
if (!_diskProvider.FolderExists("/etc/"))
|
|
|
|
{
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
var releaseFiles = _diskProvider.GetFiles("/etc/", false).Where(c => c.EndsWith("release")).ToList();
|
|
|
|
|
|
|
|
var name = "Linux";
|
|
|
|
var fullName = "";
|
|
|
|
var version = "";
|
|
|
|
|
|
|
|
var success = false;
|
|
|
|
|
|
|
|
foreach (var releaseFile in releaseFiles)
|
|
|
|
{
|
|
|
|
var fileContent = _diskProvider.ReadAllText(releaseFile);
|
|
|
|
var lines = Regex.Split(fileContent, "\r\n|\r|\n");
|
|
|
|
|
|
|
|
foreach (var line in lines)
|
|
|
|
{
|
|
|
|
var parts = line.Split('=');
|
|
|
|
if (parts.Length >= 2)
|
|
|
|
{
|
|
|
|
var key = parts[0];
|
|
|
|
var value = parts[1];
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(value))
|
|
|
|
{
|
|
|
|
switch (key)
|
|
|
|
{
|
|
|
|
case "ID":
|
|
|
|
success = true;
|
|
|
|
name = value;
|
|
|
|
break;
|
|
|
|
case "PRETTY_NAME":
|
|
|
|
success = true;
|
|
|
|
fullName = value;
|
|
|
|
break;
|
|
|
|
case "VERSION_ID":
|
|
|
|
success = true;
|
|
|
|
version = value;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!success)
|
|
|
|
{
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
return new OsVersionModel(name, version, fullName);
|
|
|
|
}
|
|
|
|
|
|
|
|
public bool Enabled => OsInfo.IsLinux;
|
|
|
|
}
|
|
|
|
}
|