From d143330e97a87657481f7b94c929297db4f6ec07 Mon Sep 17 00:00:00 2001 From: Joseph Milazzo Date: Wed, 3 Nov 2021 14:13:38 -0500 Subject: [PATCH] Shakeout Changes (#717) * Make the appsettings public on Configuration and change how we detect when to migrate for non-docker users. * Fixed up non-docker copy command and removed duplicate check on source directory for a copy. * Don't delete files unless we know we are successful --- .gitignore | 2 ++ API/Data/MigrateConfigFiles.cs | 34 +++++++++++++++++++++----------- API/Services/DirectoryService.cs | 7 ++----- Kavita.Common/Configuration.cs | 2 +- 4 files changed, 27 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index c047966d1..b4cc993ab 100644 --- a/.gitignore +++ b/.gitignore @@ -507,6 +507,7 @@ UI/Web/dist/ /API/config/backups/ /API/config/cache/ /API/config/temp/ +/API/config/stats/ /API/config/kavita.db /API/config/kavita.db-shm /API/config/kavita.db-wal @@ -514,5 +515,6 @@ UI/Web/dist/ /API/config/Hangfire-log.db API/config/covers/ API/config/*.db +API/config/stats/* UI/Web/.vscode/settings.json diff --git a/API/Data/MigrateConfigFiles.cs b/API/Data/MigrateConfigFiles.cs index 8b108b98e..c17b2d695 100644 --- a/API/Data/MigrateConfigFiles.cs +++ b/API/Data/MigrateConfigFiles.cs @@ -44,14 +44,14 @@ namespace API.Data CopyAppFolders(); DeleteAppFolders(); - + UpdateConfiguration(); Console.WriteLine("Migration complete. All config files are now in config/ directory"); return; } - if (!new FileInfo(Path.Join(Directory.GetCurrentDirectory(), "appsettings.json")).Exists) + if (new FileInfo(Configuration.AppSettingsFilename).Exists) { Console.WriteLine("Migration to config/ not needed"); return; @@ -63,12 +63,20 @@ namespace API.Data Console.WriteLine($"Creating {ConfigDirectory}"); DirectoryService.ExistOrCreate(ConfigDirectory); - CopyLooseLeafFiles(); + try + { + CopyLooseLeafFiles(); - CopyAppFolders(); + CopyAppFolders(); - // Then we need to update the config file to point to the new DB file - UpdateConfiguration(); + // Then we need to update the config file to point to the new DB file + UpdateConfiguration(); + } + catch (Exception) + { + Console.WriteLine("There was an exception during migration. Please move everything manually."); + return; + } // Finally delete everything in the source directory Console.WriteLine("Removing old files"); @@ -99,13 +107,15 @@ namespace API.Data private static void CopyAppFolders() { Console.WriteLine("Moving folders to config"); - foreach (var folderToMove in AppFolders) - { - if (new DirectoryInfo(Path.Join(ConfigDirectory, folderToMove)).Exists) continue; - DirectoryService.CopyDirectoryToDirectory(Path.Join(Directory.GetCurrentDirectory(), folderToMove), - Path.Join(ConfigDirectory, folderToMove)); - } + foreach (var folderToMove in AppFolders) + { + if (new DirectoryInfo(Path.Join(ConfigDirectory, folderToMove)).Exists) continue; + + DirectoryService.CopyDirectoryToDirectory(Path.Join(Directory.GetCurrentDirectory(), folderToMove), + Path.Join(ConfigDirectory, folderToMove)); + } + Console.WriteLine("Moving folders to config...DONE"); } diff --git a/API/Services/DirectoryService.cs b/API/Services/DirectoryService.cs index f770a3065..1a067a706 100644 --- a/API/Services/DirectoryService.cs +++ b/API/Services/DirectoryService.cs @@ -136,13 +136,10 @@ namespace API.Services /// Defaults to *, meaning all files /// /// - public static bool CopyDirectoryToDirectory(string sourceDirName, string destDirName, string searchPattern = "*") + public static bool CopyDirectoryToDirectory(string sourceDirName, string destDirName, string searchPattern = "") { if (string.IsNullOrEmpty(sourceDirName)) return false; - var di = new DirectoryInfo(sourceDirName); - if (!di.Exists) return false; - // Get the subdirectories for the specified directory. var dir = new DirectoryInfo(sourceDirName); @@ -156,7 +153,7 @@ namespace API.Services var dirs = dir.GetDirectories(); // If the destination directory doesn't exist, create it. - Directory.CreateDirectory(destDirName); + ExistOrCreate(destDirName); // Get the files in the directory and copy them to the new location. var files = GetFilesWithExtension(dir.FullName, searchPattern).Select(n => new FileInfo(n)); diff --git a/Kavita.Common/Configuration.cs b/Kavita.Common/Configuration.cs index f5f995fce..6e6899f3f 100644 --- a/Kavita.Common/Configuration.cs +++ b/Kavita.Common/Configuration.cs @@ -8,7 +8,7 @@ namespace Kavita.Common { public static class Configuration { - private static readonly string AppSettingsFilename = Path.Join("config", GetAppSettingFilename()); + public static readonly string AppSettingsFilename = Path.Join("config", GetAppSettingFilename()); public static string Branch {