using OtterGui.Classes; using OtterGui.Log; using System.Collections.Generic; using System.IO; using System.Linq; namespace CustomizePlus.Core.Services; public class BackupService { private readonly Logger _logger; private readonly FilenameService _filenameService; private readonly DirectoryInfo _configDirectory; private readonly IReadOnlyList _fileNames; public BackupService(Logger logger, FilenameService filenameService) { _logger = logger; _filenameService = filenameService; _fileNames = PluginFiles(_filenameService); _configDirectory = new DirectoryInfo(_filenameService.ConfigDirectory); Backup.CreateAutomaticBackup(logger, _configDirectory, _fileNames); } /// /// Create a permanent backup with a given name for migrations. /// public void CreateMigrationBackup(string name) => Backup.CreatePermanentBackup(_logger, _configDirectory, _fileNames, name); /// /// Create backup for all version 3 configuration files /// public void CreateV3Backup(string name = "v3_to_v4_migration") { var list = new List(16) { new(_filenameService.ConfigFile) }; list.AddRange(Directory.EnumerateFiles(_filenameService.ConfigDirectory, "*.profile", SearchOption.TopDirectoryOnly).Select(x => new FileInfo(x))); Backup.CreatePermanentBackup(_logger, _configDirectory, list, name); } /// /// Collect all relevant files for plugin configuration. /// private static IReadOnlyList PluginFiles(FilenameService fileNames) { var list = new List(16) { new(fileNames.ConfigFile), new(fileNames.ProfileFileSystem), new(fileNames.TemplateFileSystem) }; list.AddRange(fileNames.Profiles()); list.AddRange(fileNames.Templates()); return list; } }