Пример #1
0
        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();
        }
Пример #2
0
 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);
     }
 }
Пример #3
0
 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
         },
     });
Пример #4
0
 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);
     }
 }
Пример #5
0
        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);
            }
        }
Пример #6
0
 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");
     }
 }
Пример #7
0
        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);
            }
        }
Пример #8
0
 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");
     }
 }
Пример #9
0
        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);
        }
Пример #10
0
        internal static void Remove()
        {
            string saveFile = OSDynamic.GetFilePath(Constants.PathSavedData, "SaveData.json");

            File.Delete(saveFile);
        }
Пример #11
0
        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);
        }
Пример #12
0
        internal static void Backup()
        {
            string backupConfigFile = OSDynamic.GetFilePath(Constants.PathSavedData, $"Config_{DateTime.Now:yy-MM-dd-H-mm}.json");

            Save(backupConfigFile);
        }
Пример #13
0
        internal static void Remove()
        {
            string configFile = OSDynamic.GetFilePath(Constants.PathConfigDefault, "Config.json");

            File.Delete(configFile);
        }