public bool SaveMergedMod(MergedMod mod) { try { var path = Path.Combine(_gameConfiguration.ModsDir, mod.FileName); var descPath = Path.Combine(_gameConfiguration.ModsDir, $"{mod.FileName}.mod"); if (Directory.Exists(path)) { if (!_notificationService.RequestConfirmation("Overwrite existing mod?", "Overwrite mod")) { return(true); } foreach (var file in Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories)) { File.Delete(file); } Directory.Delete(path, true); File.Delete(descPath); } var contents = string.Join(Environment.NewLine, mod.ToDescriptor()); File.WriteAllText(descPath, contents); using (var saver = new DiskFileSaver(path)) { foreach (var modFile in mod.Files) { //var dir = Path.Combine(path, modFile.Directory); //if (!Directory.Exists(dir)) //{ // Directory.CreateDirectory(dir); //} //var fn = Path.Combine(path, modFile.Path); modFile.Save(saver); } } } catch (Exception ex) { Log.Error(ex, "Error saving mod!"); return(false); } return(true); }
public ModMergeContext(IEnumerable <ModConflictDescriptor> source, Action <ModMergeContext> save) { Result = new MergedMod("Merge result", source); modFiles = Result.Files; LeftBefore = ReactiveCommand.Create <ModFileToMerge>(DoBefore); LeftAfter = ReactiveCommand.Create <ModFileToMerge>(DoAfter); RightBefore = ReactiveCommand.Create <ModFileToMerge>(DoBefore); RightAfter = ReactiveCommand.Create <ModFileToMerge>(DoAfter); saveAction = save; Save = ReactiveCommand.Create(DoSave, _canSave); _rootDirectory = ModDirectory.CreateRoot(Result.ToModConflictDescriptor()); }
public bool SaveMergedMod(MergedMod mod) { return(_installedModManager.SaveMergedMod(mod)); }