internal static void ShowEnvironmentVariables() { Log.Debug("Displaying Environment & Setting Details"); string info = "".AddSeperatorTilde(); int envLength = 25; int setLength = 18; info += "App Version".ConvertToMenuProperty(OSDynamic.GetRunningVersion().ToString(), envLength); info += "Hostname".ConvertToMenuProperty(Environment.MachineName, envLength); info += "Current OS Platform".ConvertToMenuProperty(OSDynamic.GetCurrentOS().ToString(), envLength); info += "Current OS Architecture".ConvertToMenuProperty(RuntimeInformation.OSArchitecture.ToString(), envLength); info += "Current OS Description".ConvertToMenuProperty(RuntimeInformation.OSDescription, envLength); info += "Current Process Arch".ConvertToMenuProperty(RuntimeInformation.ProcessArchitecture.ToString(), envLength); info += "Current Framework".ConvertToMenuProperty(RuntimeInformation.FrameworkDescription, envLength); info += "Logging Path".ConvertToMenuProperty(Constants.PathLogs, envLength); info += "Config Path".ConvertToMenuProperty(Constants.PathConfigDefault, envLength); info = info.AddSeperatorDashed(); info += "Email Name".ConvertToMenuProperty(Constants.Config.SMTPEmailName, setLength); info += "Email From Address".ConvertToMenuProperty(Constants.Config.SMTPEmailFrom, setLength); info += "Email URL".ConvertToMenuProperty(Constants.Config.SMTPUrl, setLength); info += "Email Port".ConvertToMenuProperty(Constants.Config.SMTPPort.ToString(), setLength); info = info.AddSeperatorTilde(); Console.WriteLine(info); Log.Information("Environment & Setting Details Displayed"); StopForMessage(); }
public static StatusReturn Load() { try { string saveFile = OSDynamic.GetFilePath(Constants.PathSavedData, "SaveData.json"); Log.Debug($"saveFile = {saveFile}"); if (File.Exists(saveFile)) { Log.Debug("Attempting to load savedData file"); var saveDataLoaded = File.ReadAllText(saveFile); Constants.SavedData = JsonConvert.DeserializeObject <SavedData>(saveDataLoaded); Log.Debug("Successfully deserialized savedData file"); return(StatusReturn.Success); } else { Log.Debug("SavedData file wasn't found"); return(StatusReturn.NotFound); } } catch (Exception ex) { Log.Error(ex, "Failed at attempting to load save data file"); return(StatusReturn.Failure); } }
public static FileType GetFileType(AppFile appFile) { return(appFile switch { AppFile.Config => new FileType { AppFile = AppFile.Config, FilePrefix = "Config_", Directory = Constants.PathConfigDefault, RetentionDays = 7 }, AppFile.Log => new FileType { AppFile = AppFile.Log, FilePrefix = OSDynamic.GetProductAssembly().ProductName, Directory = Constants.PathLogs, RetentionDays = 30 }, AppFile.SavedData => new FileType { AppFile = AppFile.SavedData, FilePrefix = "SaveData_", Directory = Constants.PathSavedData, RetentionDays = 90 }, _ => new FileType { AppFile = AppFile.Log, FilePrefix = OSDynamic.GetProductAssembly().ProductName, Directory = Constants.PathLogs, RetentionDays = 30 }, });
public static StatusReturn Backup() { try { string backupSaveDataFile = OSDynamic.GetFilePath(Constants.PathSavedData, $"SaveData_{DateTime.Now:yy-MM-dd-H-mm}.json"); Save(backupSaveDataFile); return(StatusReturn.Success); } catch (Exception ex) { Log.Error(ex, "Failed to backup savedData file"); return(StatusReturn.Failure); } }
public static StatusReturn Save(string saveFile = "") { try { if (!Directory.Exists(Constants.PathSavedData)) { Log.Debug($"SavedData path doesn't exist, attempting to create dir: {Constants.PathSavedData}"); Directory.CreateDirectory(Constants.PathSavedData); Log.Information($"Created missing config dir: {Constants.PathSavedData}"); } if (string.IsNullOrWhiteSpace(saveFile)) { saveFile = OSDynamic.GetFilePath(Constants.PathSavedData, "SaveData.json"); } else { var split = saveFile.Split('\\'); if (OSDynamic.GetCurrentOS() != OSPlatform.Windows) { split = saveFile.Split('/'); } saveFile = OSDynamic.GetFilePath(Constants.PathSavedData, split.Last()); if (!saveFile.ToLower().EndsWith(".json")) { saveFile = saveFile += ".json"; } } Log.Debug($"saveFile = {saveFile}"); if (File.Exists(saveFile)) { Log.Debug("Attempting to save over save data file"); } else { Log.Debug("Attempting to save a new save data file"); } File.WriteAllText(saveFile, JsonConvert.SerializeObject(Constants.SavedData)); Log.Debug("Successfully serialized savedData file"); return(StatusReturn.Success); } catch (Exception ex) { Log.Error(ex, "Failed to save savedData file"); return(StatusReturn.Failure); } }
internal static void CreateNew() { try { string saveFile = OSDynamic.GetFilePath(Constants.PathSavedData, "SaveData.json"); if (File.Exists(saveFile)) { Log.Warning($"SaveData file already exists, will back it up before creating a new one: {saveFile}"); Backup(); Remove(); } Constants.SavedData = new SavedData(); Log.Debug("Created new SaveData"); } catch (Exception ex) { Log.Error(ex, "Failed to create new savedata file"); } }
public static StatusReturn Load() { string configFile = OSDynamic.GetFilePath(Constants.PathConfigDefault, "Config.json"); Log.Debug($"configFile = {configFile}"); if (File.Exists(configFile)) { Log.Debug("Attempting to load config file"); var configLoaded = File.ReadAllText(configFile); Constants.Config = UnsecureSensitiveProperties(JsonConvert.DeserializeObject <Config>(configLoaded)); Log.Debug("Successfully deserialized config file"); return(StatusReturn.Success); } else { Log.Debug("Config file wasn't found"); return(StatusReturn.NotFound); } }
internal static void CreateNew() { try { string configFile = OSDynamic.GetFilePath(Constants.PathConfigDefault, "Config.json"); if (File.Exists(configFile)) { Log.Warning($"Config file already exists, will back it up before creating a new one: {configFile}"); Backup(); Remove(); } Constants.Config = new Config(); Log.Information("Created new config"); } catch (Exception ex) { Log.Error(ex, "Failed to create new config file"); Handler.NotifyError(ex, "ConfigCreate"); } }
public static StatusReturn Save(string configFile = "") { if (!Directory.Exists(Constants.PathConfigDefault)) { Log.Debug($"Config path doesn't exist, attempting to create dir: {Constants.PathConfigDefault}"); Directory.CreateDirectory(Constants.PathConfigDefault); Log.Information($"Created missing config dir: {Constants.PathConfigDefault}"); } if (string.IsNullOrWhiteSpace(configFile)) { configFile = OSDynamic.GetFilePath(Constants.PathConfigDefault, "Config.json"); } else { var split = configFile.Split('\\'); if (OSDynamic.GetCurrentOS() != OSPlatform.Windows) { split = configFile.Split('/'); } configFile = OSDynamic.GetFilePath(Constants.PathConfigDefault, split.Last()); if (!configFile.ToLower().EndsWith(".json")) { configFile = configFile += ".json"; } } Log.Debug("configFile: {ConfigFile}", configFile); if (File.Exists(configFile)) { Log.Debug("Attempting to save over current config file"); } else { Log.Debug("Attempting to save a new config file"); } Config finalConfig = SecureSensitiveProperties(Constants.Config); File.WriteAllText(configFile, JsonConvert.SerializeObject(finalConfig)); Log.Debug("Successfully serialized config file"); return(StatusReturn.Success); }
internal static void Remove() { string saveFile = OSDynamic.GetFilePath(Constants.PathSavedData, "SaveData.json"); File.Delete(saveFile); }
internal static int PromptMenu(string menuTitle, string[] choices, string description = "", bool displayVersion = false) { Console.Clear(); Log.Debug("Displaying Menu: {MenuTitle}", menuTitle); var validAnswer = false; int intAnswer = 0; while (!validAnswer) { string menu = ""; if (Constants.Notifications.Count > 0) { menu = Constants.Notifications.Last().ConvertToNotification(); } menu = menu.AddSeperatorTilde(); menu += menuTitle.ConvertToMenuTitle(); if (displayVersion) { if (Constants.UpdateReady) { menu += "Update Ready on next App Startup".ConvertToMenuTitle(); } else { var version = OSDynamic.GetRunningVersion(); var verString = $"v{version.Major}.{version.Minor}.{version.Build}"; if (!(verString.Length % 2 == 0)) { verString += " "; } menu += verString.ConvertToMenuTitle(); } } if (!string.IsNullOrWhiteSpace(description)) { menu = menu.AddSeperatorDashed(); menu += description.ConvertToMenuTitle(); } menu = menu.AddSeperatorTilde(); int choiceNum = 1; foreach (var choice in choices) { menu += choice.ConvertToMenuOption(choiceNum); choiceNum++; } menu = menu.AddSeperatorTilde(); menu += $"{Environment.NewLine}Option: "; Console.Write(menu); var answer = Console.ReadLine(); Log.Debug("Menu prompt answered: {Answer}", answer); if (!int.TryParse(answer, out intAnswer)) { Log.Debug("Menu answer entered was an invalid response"); Console.WriteLine("Answer wasn't invalid, please press enter and try again"); Console.ReadLine(); } else { validAnswer = true; } } Log.Debug("Valid menu option was entered: {Answer}", intAnswer); return(intAnswer); }
internal static void Backup() { string backupConfigFile = OSDynamic.GetFilePath(Constants.PathSavedData, $"Config_{DateTime.Now:yy-MM-dd-H-mm}.json"); Save(backupConfigFile); }
internal static void Remove() { string configFile = OSDynamic.GetFilePath(Constants.PathConfigDefault, "Config.json"); File.Delete(configFile); }