private static void Restore(OptionSubFolder optionSubFolder) { if (InteractiveConsole.PreProcessing.Restore(optionSubFolder, out var log)) { Program.Log(log); } }
public void ProcessXMLFile(OptionSubFolder optionSubFolder) { var content = File.ReadAllText(optionSubFolder.XMLFile.FullName); optionSubFolder.Contents = content; lock (_lock2) { if (!Duplicates.ContainsKey(content)) { Duplicates.Add(content, optionSubFolder.XMLFile.FullName); } else { optionSubFolder.IsDuplicate = true; } } optionSubFolder.XMLTags.Clear(); foreach (var regex in Settings.RegexMatch) { var capture = Regex.Match(content, regex.Key, RegexOptions.IgnoreCase); if (capture.Success) { optionSubFolder.XMLTags.Add(capture.Value, capture.Groups[2].Value.Equals(regex.Value, StringComparison.InvariantCultureIgnoreCase)); } } }
public bool Unlock(OptionSubFolder optionSubFolder, out string log) { log = null; if (optionSubFolder.XMLTags.Count == 0 || optionSubFolder.XMLTags.All(x => x.Value)) { //No Tags or already unlocked return(false); } foreach (var regex in Settings.RegexMatch) { optionSubFolder.Contents = Regex.Replace(optionSubFolder.Contents, regex.Key, $"$1{regex.Value}$3", RegexOptions.IgnoreCase); } var oldPath = optionSubFolder.XMLFile.FullName; if (!File.Exists($"{optionSubFolder.XMLFile.FullName}.bak")) { optionSubFolder.XMLFile.MoveTo($"{optionSubFolder.XMLFile.FullName}.bak"); } File.WriteAllText(oldPath, optionSubFolder.Contents); optionSubFolder.XMLFile = new FileInfo(oldPath); log = $"Unlocked File {oldPath}"; foreach (var xmlTag in optionSubFolder.XMLTags.Keys.ToArray()) { optionSubFolder.XMLTags[xmlTag] = !optionSubFolder.XMLTags[xmlTag]; } return(true); }
public bool Restore(OptionSubFolder optionSubFolder, out string log) { log = null; var oldPath = $"{optionSubFolder.XMLFile.FullName}.bak"; if (!File.Exists(oldPath)) { return(false); } var path = optionSubFolder.XMLFile.FullName; File.Delete(optionSubFolder.XMLFile.FullName); var oldFile = new FileInfo(oldPath); oldFile.MoveTo(path); optionSubFolder.XMLFile = new FileInfo(path); ProcessXMLFile(optionSubFolder); log = $"Restored File {optionSubFolder.XMLFile.FullName}"; return(true); }
private List <OptionSubFolder> ProcessoptionTypeFolder(string optionSubFolderPath, OptionSubFolderType optionSubFolderType, DataTable dataTable) { var optionSubFolders = new List <OptionSubFolder>(); var directory = new DirectoryInfo(optionSubFolderPath); var optionSubFolderDirectories = directory.GetDirectories(); Parallel.ForEach(optionSubFolderDirectories, (optionSubFolderDirectory) => { var optionSubFolder = new OptionSubFolder(); optionSubFolder.DirectoryInfo = optionSubFolderDirectory; optionSubFolder.OptionType = optionSubFolderType; var path = Path.Combine(optionSubFolderDirectory.FullName, $"{directory.Name}.xml"); var xmlFile = new FileInfo(path); if (!xmlFile.Exists) { Program.LogError($" Missing XML File from {path}"); return; } optionSubFolder.XMLFile = xmlFile; ProcessXMLFile(optionSubFolder); optionSubFolder.ParentDirectory = directory; lock (_lock) { optionSubFolders.Add(optionSubFolder); } }); var row = dataTable.NewRow(); row["Path"] = directory.Name; row["Files"] = optionSubFolders.Count(); row["Unlocked"] = $"{optionSubFolders.Where(x => x.XMLTags.Any()).Count(x => x.XMLTags.Values.All(y => y))}/{optionSubFolders.Where(x => x.XMLTags.Any()).Count()}"; row["Duplicate"] = optionSubFolders.Count(x => x.IsDuplicate); dataTable.Rows.Add(row); return(optionSubFolders.ToList()); }