using System; using System.Diagnostics.CodeAnalysis; using System.IO; namespace ArchiSteamFarm { public static class ASFPathHelper { static readonly Lazy _AppDataDirectory = new(() => { var path = Path.Combine(IOPath.AppDataDirectory, "ASF"); IOPath.DirCreateByNotExists(path); return path; }); /// /// /// /// AppData\ASF\config /// /// /// AppData\ASF\plugins /// /// /// public static string AppDataDirectory => _AppDataDirectory.Value; /// /// /// /// Windows:Logs\ASF /// /// /// Windows Desktop Bridge:{CacheDirectory}\Logs\ASF /// /// /// /// /// public static string GetLogDirectory([NotNull] string logDirPath) { var path = (logDirPath.EndsWith(Path.DirectorySeparatorChar) ? logDirPath : logDirPath + Path.DirectorySeparatorChar) + "ASF"; IOPath.DirCreateByNotExists(path); return path; } public static string GetNLogArchiveFileName([NotNull] string logDirectory) { var path = logDirectory + Path.DirectorySeparatorChar + SharedInfo.ArchivalLogFile; return path; } public static string GetNLogFileName([NotNull] string logDirectory) { var path = logDirectory + Path.DirectorySeparatorChar + SharedInfo.LogFile; return path; } static readonly Lazy _WebsiteDirectory = new(() => { var path = Path.Combine(IOPath.AppDataDirectory, "ASF", "www"); IOPath.DirCreateByNotExists(path); return path; }); /// /// /// /// AppData\ASF\www /// /// /// public static string WebsiteDirectory => _WebsiteDirectory.Value; #if DEBUG [Obsolete("use AppDataDirectory")] public static string HomeDirectory => AppDataDirectory; #endif public const string NLogGeneralLayout = NLog.Logging.GeneralLayout; } public enum ASFPathFolder { ASF, Config, Plugin, WWW, Logs, } }