diff --git a/CHANGELOG.md b/CHANGELOG.md index ed2f268..84f43c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Added CultureInfo extensions for converting between 12 hour and 24 hour time formatting - Added environment methods for setting the current date and time - Added BinarySearch extension method for all IList types + - Added PathUtils methods to get ProgramData directory ### Changed - The Root Config path in Net Standard will now be the ICD.Connect folder in the current environments ProgramData directory diff --git a/ICD.Common.Utils/PathUtils.cs b/ICD.Common.Utils/PathUtils.cs index 7faa121..b9fbd72 100644 --- a/ICD.Common.Utils/PathUtils.cs +++ b/ICD.Common.Utils/PathUtils.cs @@ -85,6 +85,37 @@ namespace ICD.Common.Utils } } + /// + /// Returns the absolute path to the program data directory. + /// + /// + [PublicAPI] + public static string ProgramDataPath { get { return Join(RootConfigPath, ProgramDataDirectory); } } + + /// + /// Returns the name of the program data directory. + /// This directory contains runtime program data that should be retained through deployments. + /// + public static string ProgramDataDirectory + { + get + { + switch (IcdEnvironment.RuntimeEnvironment) + { + case IcdEnvironment.eRuntimeEnvironment.SimplSharp: + case IcdEnvironment.eRuntimeEnvironment.SimplSharpPro: + case IcdEnvironment.eRuntimeEnvironment.Standard: + return string.Format("Program{0:D2}Data", ProgramUtils.ProgramNumber); + + case IcdEnvironment.eRuntimeEnvironment.SimplSharpProMono: + return "ProgramData"; + + default: + throw new ArgumentOutOfRangeException(); + } + } + } + /// /// Returns the absolute path to the common configuration directory. ///