From c6ee1ceb0e5cf3a66a8d98fc1daa67398d793ec0 Mon Sep 17 00:00:00 2001 From: sebeksd <18705953+sebeksd@users.noreply.github.com> Date: Fri, 13 Mar 2020 21:54:33 +0100 Subject: [PATCH] Split Manual and pre-restore backup into separate folders (now they are not counted towords size limit and are never deleted), fixed som typos --- SaveGame Backup Tool/App.xaml.cs | 2 +- SaveGame Backup Tool/BackupMaker.cs | 55 +++++++++++++++++-- SaveGame Backup Tool/MainWindow.xaml | 2 +- SaveGame Backup Tool/MainWindow.xaml.cs | 12 ++-- .../Properties/AssemblyInfo.cs | 4 +- SaveGame Backup Tool/Restore.xaml.cs | 23 ++++---- 6 files changed, 72 insertions(+), 26 deletions(-) diff --git a/SaveGame Backup Tool/App.xaml.cs b/SaveGame Backup Tool/App.xaml.cs index 9c2b208..447e000 100644 --- a/SaveGame Backup Tool/App.xaml.cs +++ b/SaveGame Backup Tool/App.xaml.cs @@ -59,7 +59,7 @@ private void Application_Startup(object sender, StartupEventArgs e) BackupMaker lBackupMaker = new BackupMaker(); string lErrorMessage = ""; - if (lBackupMaker.MakeBackup(lBackupTask, "", ref lErrorMessage)) + if (lBackupMaker.MakeBackup(lBackupTask, BackupType.btNormal, ref lErrorMessage)) Console.WriteLine("SUCCEED: Task '" + lBackupTask.Settings.Name + "' backup created"); else Console.WriteLine("FAILED: Task '" + lBackupTask.Settings.Name + "' backup failed: \r\n" + lErrorMessage); diff --git a/SaveGame Backup Tool/BackupMaker.cs b/SaveGame Backup Tool/BackupMaker.cs index 94dc12a..ce6a9c8 100644 --- a/SaveGame Backup Tool/BackupMaker.cs +++ b/SaveGame Backup Tool/BackupMaker.cs @@ -25,6 +25,13 @@ You should have received a copy of the GNU Lesser General Public License namespace SaveGameBackupTool { + public enum BackupType + { + btNormal, + btManual, + btRestore + } + public class BackupMaker { public BackupMaker() @@ -33,6 +40,41 @@ public BackupMaker() } + private string BackupTypeToFilePostfix(BackupType lType) + { + switch (lType) + { + case BackupType.btManual: + return "-manual"; + case BackupType.btRestore: + return "-pre_restore"; + default: + return ""; + } + } + + private string DirectoryForBakupType(BackupType lType, string lDestinationPath) + { + string lSubFolder; + switch (lType) + { + case BackupType.btManual: + lSubFolder = "Manual"; + break; + case BackupType.btRestore: + lSubFolder = "OnRestore"; + break; + default: + lSubFolder = ""; + break; + } + + if (!String.IsNullOrEmpty(lSubFolder)) + return Path.Combine(lDestinationPath, lSubFolder + "\\"); + else + return lDestinationPath; + } + private bool CheckFilterForFile(string lFileFilterRegex, string lFileName) { // TODO Performance: make regex object persistent through whole Task scan @@ -179,22 +221,23 @@ public void CleanUpOldBackups(BackupTask lBackupTask, ref string pErrorMessage) } } - public bool MakeBackup(BackupTask lBackupTask, string lPostfix, ref string pErrorMessage) + public bool MakeBackup(BackupTask lBackupTask, BackupType lType, ref string pErrorMessage) { string lBackupFileName = DateTime.Now.ToString(lBackupTask.Settings.BackupFileNamePattern); - lBackupFileName += lPostfix; + lBackupFileName += BackupTypeToFilePostfix(lType); lBackupFileName += ".zip"; + string lDestinationPath = DirectoryForBakupType(lType, lBackupTask.Settings.DestinationPath); try { // to be sure that backup dir exists - Directory.CreateDirectory(lBackupTask.Settings.DestinationPath); + Directory.CreateDirectory(lDestinationPath); // try to make a backup if (lBackupTask.Settings.SourcePathHelper.IsFile) - ZipHelper.CreateFromFile(lBackupTask.Settings.SourcePathHelper.FilePath, lBackupTask.Settings.DestinationPath + lBackupFileName, CompressionLevel.Fastest, false, null, null); + ZipHelper.CreateFromFile(lBackupTask.Settings.SourcePathHelper.FilePath, lDestinationPath + lBackupFileName, CompressionLevel.Fastest, false, null, null); else - ZipHelper.CreateFromDirectory(lBackupTask.Settings.SourcePathHelper.DirectoryPath, lBackupTask.Settings.DestinationPath + lBackupFileName, CompressionLevel.Fastest, false, null, lFilterFileName => !CheckFilterForFile(lBackupTask.Settings.FileFilterRegex, lFilterFileName)); + ZipHelper.CreateFromDirectory(lBackupTask.Settings.SourcePathHelper.DirectoryPath, lDestinationPath + lBackupFileName, CompressionLevel.Fastest, false, null, lFilterFileName => !CheckFilterForFile(lBackupTask.Settings.FileFilterRegex, lFilterFileName)); pErrorMessage = ""; @@ -207,7 +250,7 @@ public bool MakeBackup(BackupTask lBackupTask, string lPostfix, ref string pErro try { // probably file was created but content is corrupted or just not complete, remove it - File.Delete(lBackupTask.Settings.DestinationPath + lBackupFileName); + File.Delete(lDestinationPath + lBackupFileName); } catch { diff --git a/SaveGame Backup Tool/MainWindow.xaml b/SaveGame Backup Tool/MainWindow.xaml index 28f7d23..90a8f0b 100644 --- a/SaveGame Backup Tool/MainWindow.xaml +++ b/SaveGame Backup Tool/MainWindow.xaml @@ -50,7 +50,7 @@