diff --git a/frontend/src/System/Status/About/About.js b/frontend/src/System/Status/About/About.js index 0965baff4..7e9a54800 100644 --- a/frontend/src/System/Status/About/About.js +++ b/frontend/src/System/Status/About/About.js @@ -15,6 +15,8 @@ class About extends Component { render() { const { version, + packageVersion, + packageAuthor, isMonoRuntime, runtimeVersion, appData, @@ -33,6 +35,14 @@ class About extends Component { data={version} /> + { + packageVersion && + <DescriptionListItem + title="Package Version" + data={(packageAuthor ? `${packageVersion} by ${packageAuthor}` : packageVersion)} + /> + } + { isMonoRuntime && <DescriptionListItem @@ -75,6 +85,8 @@ class About extends Component { About.propTypes = { version: PropTypes.string.isRequired, + packageVersion: PropTypes.string, + packageAuthor: PropTypes.string, isMonoRuntime: PropTypes.bool.isRequired, runtimeVersion: PropTypes.string.isRequired, appData: PropTypes.string.isRequired, diff --git a/src/NzbDrone.Core/Configuration/DeploymentInfoProvider.cs b/src/NzbDrone.Core/Configuration/DeploymentInfoProvider.cs index 964f3873b..f19ce68ac 100644 --- a/src/NzbDrone.Core/Configuration/DeploymentInfoProvider.cs +++ b/src/NzbDrone.Core/Configuration/DeploymentInfoProvider.cs @@ -14,11 +14,12 @@ namespace NzbDrone.Core.Configuration { public interface IDeploymentInfoProvider { - Version PackageVersion { get; } + string PackageVersion { get; } + string PackageAuthor { get; } string PackageBranch { get; } UpdateMechanism PackageUpdateMechanism { get; } - Version ReleaseVersion { get; } + string ReleaseVersion { get; } string ReleaseBranch { get; } bool IsExternalUpdateMechanism { get; } @@ -41,11 +42,12 @@ namespace NzbDrone.Core.Configuration { var data = diskProvider.ReadAllText(packageInfoPath); - PackageVersion = ReadVersion(data, "PackageVersion"); + PackageVersion = ReadValue(data, "PackageVersion"); + PackageAuthor = ReadValue(data, "PackageAuthor"); PackageUpdateMechanism = ReadEnumValue(data, "UpdateMethod", UpdateMechanism.BuiltIn); - PackageBranch = ReadValue(data, "Branch", null); + PackageBranch = ReadValue(data, "Branch"); - ReleaseVersion = ReadVersion(data, "ReleaseVersion"); + ReleaseVersion = ReadValue(data, "ReleaseVersion"); if (PackageBranch.IsNotNullOrWhiteSpace()) { @@ -57,8 +59,8 @@ namespace NzbDrone.Core.Configuration { var data = diskProvider.ReadAllText(releaseInfoPath); - ReleaseVersion = ReadVersion(data, "ReleaseVersion", ReleaseVersion); - ReleaseBranch = ReadValue(data, "Branch", null); + ReleaseVersion = ReadValue(data, "ReleaseVersion", ReleaseVersion); + ReleaseBranch = ReadValue(data, "Branch"); if (ReleaseBranch.IsNotNullOrWhiteSpace()) { @@ -69,7 +71,7 @@ namespace NzbDrone.Core.Configuration DefaultUpdateMechanism = PackageUpdateMechanism; } - private static string ReadValue(string fileData, string key, string defaultValue) + private static string ReadValue(string fileData, string key, string defaultValue = null) { var match = Regex.Match(fileData, "^" + key + "=(.*)$", RegexOptions.Multiline); if (match.Success) @@ -83,7 +85,7 @@ namespace NzbDrone.Core.Configuration private static T ReadEnumValue<T>(string fileData, string key, T defaultValue) where T : struct { - var value = ReadValue(fileData, key, null); + var value = ReadValue(fileData, key); if (value != null && Enum.TryParse<T>(value, true, out var result)) { return result; @@ -92,22 +94,12 @@ namespace NzbDrone.Core.Configuration return defaultValue; } - private static Version ReadVersion(string fileData, string key, Version defaultValue = null) - { - var value = ReadValue(fileData, key, null); - if (value != null && Version.TryParse(value, out var result)) - { - return result; - } - - return defaultValue; - } - - public Version PackageVersion { get; private set; } + public string PackageVersion { get; private set; } + public string PackageAuthor { get; private set; } public string PackageBranch { get; private set; } public UpdateMechanism PackageUpdateMechanism { get; private set; } - public Version ReleaseVersion { get; set; } + public string ReleaseVersion { get; private set; } public string ReleaseBranch { get; set; } diff --git a/src/Sonarr.Api.V3/System/SystemModule.cs b/src/Sonarr.Api.V3/System/SystemModule.cs index b6dba4795..1b3ebf7e8 100644 --- a/src/Sonarr.Api.V3/System/SystemModule.cs +++ b/src/Sonarr.Api.V3/System/SystemModule.cs @@ -75,6 +75,8 @@ namespace Sonarr.Api.V3.System RuntimeVersion = _platformInfo.Version, RuntimeName = PlatformInfo.Platform, StartTime = _runtimeInfo.StartTime, + PackageVersion = _deploymentInfoProvider.PackageVersion, + PackageAuthor = _deploymentInfoProvider.PackageAuthor, PackageUpdateMechanism = _deploymentInfoProvider.PackageUpdateMechanism }.AsResponse(); }