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
{