diff --git a/ICD.Common.Utils/PathUtils.cs b/ICD.Common.Utils/PathUtils.cs index f89dc93..3f7237d 100644 --- a/ICD.Common.Utils/PathUtils.cs +++ b/ICD.Common.Utils/PathUtils.cs @@ -6,179 +6,192 @@ using ICD.Common.Utils.IO; namespace ICD.Common.Utils { - /// - /// Provides util methods for working with file/directory paths. - /// - public static class PathUtils - { - #region Properties + /// + /// Provides util methods for working with file/directory paths. + /// + public static class PathUtils + { + #region Properties - /// - /// Gets the path to the root directory of the processor. - /// - [PublicAPI] - public static string RootPath { get { return IcdDirectory.GetDirectoryRoot("\\"); } } + /// + /// Gets the path to the root directory of the processor. + /// + [PublicAPI] + public static string RootPath { get { return IcdDirectory.GetDirectoryRoot("\\"); } } - /// - /// Gets the path to the NVRAM directory. - /// - [PublicAPI] - public static string NvramPath { get { return Join(RootPath, "NVRAM"); } } + /// + /// Gets the path to the program directory + /// + [PublicAPI] + public static string ProgramPath + { + get + { + string directoryName = string.Format("Program{0}", ProgramUtils.ProgramNumber); + return Join(RootPath, directoryName); + } + } - /// - /// Returns the absolute path to the configuration directory. - /// - /// - [PublicAPI] - public static string ProgramConfigPath - { - get - { - string directoryName = string.Format("Program{0:D2}Config", ProgramUtils.ProgramNumber); - return Join(NvramPath, directoryName); - } - } + /// + /// Gets the path to the NVRAM directory. + /// + [PublicAPI] + public static string NvramPath { get { return Join(RootPath, "NVRAM"); } } - /// - /// Returns the absolute path to the common configuration directory. - /// - [PublicAPI] - public static string CommonConfigPath { get { return Join(NvramPath, "CommonConfig"); } } + /// + /// Returns the absolute path to the configuration directory. + /// + /// + [PublicAPI] + public static string ProgramConfigPath + { + get + { + string directoryName = string.Format("Program{0:D2}Config", ProgramUtils.ProgramNumber); + return Join(NvramPath, directoryName); + } + } - /// - /// Returns the absolute path to the common config library directory. - /// - [PublicAPI] - public static string CommonLibPath { get { return Join(CommonConfigPath, "Lib"); } } + /// + /// Returns the absolute path to the common configuration directory. + /// + [PublicAPI] + public static string CommonConfigPath { get { return Join(NvramPath, "CommonConfig"); } } - /// - /// Returns the absolute path to the program config library directory. - /// - [PublicAPI] - public static string ProgramLibPath { get { return Join(ProgramConfigPath, "Lib"); } } + /// + /// Returns the absolute path to the common config library directory. + /// + [PublicAPI] + public static string CommonLibPath { get { return Join(CommonConfigPath, "Lib"); } } - #endregion + /// + /// Returns the absolute path to the program config library directory. + /// + [PublicAPI] + public static string ProgramLibPath { get { return Join(ProgramConfigPath, "Lib"); } } - #region Methods + #endregion - /// - /// Creates a path from the given path nodes. - /// - /// - /// - public static string Join(params string[] items) - { - return items.Length > 1 - ? items.Skip(1).Aggregate(items.First(), IcdPath.Combine) - : items.FirstOrDefault(string.Empty); - } + #region Methods - /// - /// Gets the full path for the given path. - /// - /// - /// - public static string GetFullPath(string path) - { - return Join(IcdDirectory.GetApplicationDirectory(), path); - } + /// + /// Creates a path from the given path nodes. + /// + /// + /// + public static string Join(params string[] items) + { + return items.Length > 1 + ? items.Skip(1).Aggregate(items.First(), IcdPath.Combine) + : items.FirstOrDefault(string.Empty); + } - /// - /// Replaces the filename while leaving the directory and extension intact. - /// - /// - /// - /// - public static string ChangeFilenameWithoutExt(string path, string newName) - { - string dir = IcdPath.GetDirectoryName(path); - string ext = IcdPath.GetExtension(path); + /// + /// Gets the full path for the given path. + /// + /// + /// + public static string GetFullPath(string path) + { + return Join(IcdDirectory.GetApplicationDirectory(), path); + } - return Join(dir, newName + ext); - } + /// + /// Replaces the filename while leaving the directory and extension intact. + /// + /// + /// + /// + public static string ChangeFilenameWithoutExt(string path, string newName) + { + string dir = IcdPath.GetDirectoryName(path); + string ext = IcdPath.GetExtension(path); - /// - /// Removes the extension from the given path. - /// - /// - /// - public static string GetPathWithoutExtension(string path) - { - string dir = IcdPath.GetDirectoryName(path); - string filename = IcdPath.GetFileNameWithoutExtension(path); + return Join(dir, newName + ext); + } - return Join(dir, filename); - } + /// + /// Removes the extension from the given path. + /// + /// + /// + public static string GetPathWithoutExtension(string path) + { + string dir = IcdPath.GetDirectoryName(path); + string filename = IcdPath.GetFileNameWithoutExtension(path); - /// - /// Recurses over the file paths at the given directory. - /// - /// - /// - public static IEnumerable RecurseFilePaths(string path) - { - if (!IcdDirectory.Exists(path)) - return Enumerable.Empty(); + return Join(dir, filename); + } - return RecursionUtils.BreadthFirstSearch(path, IcdDirectory.GetDirectories) - .SelectMany(p => IcdDirectory.GetFiles(p)); - } + /// + /// Recurses over the file paths at the given directory. + /// + /// + /// + public static IEnumerable RecurseFilePaths(string path) + { + if (!IcdDirectory.Exists(path)) + return Enumerable.Empty(); - /// - /// Searches the program config path, common config path, and application path to - /// find the first config that exists with the given local path. - /// - /// - /// - [PublicAPI] - public static string GetDefaultConfigPath(params string[] localPath) - { - string local = Join(localPath); + return RecursionUtils.BreadthFirstSearch(path, IcdDirectory.GetDirectories) + .SelectMany(p => IcdDirectory.GetFiles(p)); + } - // Program slot configuration - string programPath = GetProgramConfigPath(localPath); - if (PathExists(programPath)) - return programPath; + /// + /// Searches the program config path, common config path, and application path to + /// find the first config that exists with the given local path. + /// + /// + /// + [PublicAPI] + public static string GetDefaultConfigPath(params string[] localPath) + { + string local = Join(localPath); - // Common program configuration - string commonPath = GetCommonConfigPath(local); - if (PathExists(commonPath)) - return commonPath; + // Program slot configuration + string programPath = GetProgramConfigPath(localPath); + if (PathExists(programPath)) + return programPath; - return Join(IcdDirectory.GetApplicationDirectory(), local); // Installation defaults - } + // Common program configuration + string commonPath = GetCommonConfigPath(local); + if (PathExists(commonPath)) + return commonPath; - /// - /// Appends the local path to the common config path. - /// - /// - public static string GetCommonConfigPath(params string[] localPath) - { - string local = Join(localPath); - return Join(CommonConfigPath, local); - } + return Join(IcdDirectory.GetApplicationDirectory(), local); // Installation defaults + } - /// - /// Appends the local path to the program config path. - /// - /// - public static string GetProgramConfigPath(params string[] localPath) - { - string local = Join(localPath); - return Join(ProgramConfigPath, local); - } + /// + /// Appends the local path to the common config path. + /// + /// + public static string GetCommonConfigPath(params string[] localPath) + { + string local = Join(localPath); + return Join(CommonConfigPath, local); + } - /// - /// Returns true if the given path exists. - /// - /// - /// - [PublicAPI] - public static bool PathExists(string path) - { - return IcdFile.Exists(path) || IcdDirectory.Exists(path); - } + /// + /// Appends the local path to the program config path. + /// + /// + public static string GetProgramConfigPath(params string[] localPath) + { + string local = Join(localPath); + return Join(ProgramConfigPath, local); + } - #endregion - } + /// + /// Returns true if the given path exists. + /// + /// + /// + [PublicAPI] + public static bool PathExists(string path) + { + return IcdFile.Exists(path) || IcdDirectory.Exists(path); + } + + #endregion + } }