diff --git a/DevConsole/Program.cs b/DevConsole/Program.cs index b2e12bc..dec5065 100644 --- a/DevConsole/Program.cs +++ b/DevConsole/Program.cs @@ -4,6 +4,7 @@ using MongoDB.Bson; using System; using System.Collections.Generic; using System.ComponentModel; +using System.IO; using System.Linq; namespace DevConsole @@ -208,13 +209,16 @@ namespace DevConsole break; case "B": //var dir = Helpers.Filters.GetFileList(@"D:\Temp"); - string fullPath = Helpers.Converters.MakeAbsolutePath(new List() { Helpers.Converters.GetSpecialToAbsolutePath("%DOCUMENTS%") }, @"BioWare\Mass Effect Andromeda").First(); - string relPath = Helpers.Converters.MakeRelativePath(new List() { Helpers.Converters.GetSpecialToAbsolutePath("%DOCUMENTS%") }, fullPath).First(); + string fullPath = Path.Combine(Helpers.Converters.GetSpecialToAbsolutePath("%DOCUMENTS%") , @"BioWare\Mass Effect Andromeda"); + string relPath = fullPath.Replace(Helpers.Converters.GetSpecialToAbsolutePath("%DOCUMENTS%") + "\\", string.Empty); Console.WriteLine($"Full: {fullPath}"); Console.WriteLine($"Relative Path: {relPath}"); PrintListValues(Helpers.Filters.FilterDirectory(fullPath, @"*.*", "")); + FSManipulation.CopyDirectory( + fullPath, + fullPath.Replace(Helpers.Converters.GetSpecialToAbsolutePath("%DOCUMENTS%") + "\\", @"D:\Temp\TEST\")); break; case "X": break; diff --git a/FireLance/FSManipulation.cs b/FireLance/FSManipulation.cs new file mode 100644 index 0000000..353edda --- /dev/null +++ b/FireLance/FSManipulation.cs @@ -0,0 +1,22 @@ +using System.IO; + +namespace FirelanceMgr +{ + public static class FSManipulation + { + public static bool CopyDirectory(string source, string destination) + { + foreach (var item in Directory.GetDirectories(source, "*", SearchOption.AllDirectories)) + { + Directory.CreateDirectory(item.Replace(source, destination)); + } + + foreach (var item in Directory.GetFiles(source, "*.*", SearchOption.AllDirectories)) + { + File.Copy(item, item.Replace(source, destination), true); + } + + return Directory.Exists(destination); + } + } +} diff --git a/FireLance/Helpers.cs b/FireLance/Helpers.cs index bead43e..652b451 100644 --- a/FireLance/Helpers.cs +++ b/FireLance/Helpers.cs @@ -29,28 +29,6 @@ namespace FirelanceMgr return d.Where(x => x.Key.Contains(specialPath)).Select(x => x.Value).Single(); } - - public static List MakeRelativePath(List directory, string fullPath) - { - var result = new List(); - foreach (var item in directory) - { - if (fullPath.StartsWith(item.ToString())) { result.Add(fullPath.TrimStart(item.ToCharArray())); } - } - - return result; - } - - public static List MakeAbsolutePath(List directory, string relPath) - { - var result = new List(); - foreach (var item in directory) - { - result.Add(Path.Combine(item, relPath)); - } - - return result; - } } public static class Parsers @@ -89,7 +67,7 @@ namespace FirelanceMgr return result; } - public static List FilterDirectory (string fullPath, string inclusionStr, string exclusionStr) + public static List FilterDirectory(string fullPath, string inclusionStr, string exclusionStr) { var filteredList = new List(); var inclusionList = Builder(fullPath, inclusionStr); @@ -106,24 +84,24 @@ namespace FirelanceMgr private static List Builder(string fullPath, string filterStr) { var filteredList = new List(); - var inclusionsList = new List(); + var filters = new List(); if (filterStr != string.Empty) { char delimeter = '|'; - string currentInclusion = string.Empty; - foreach (char c in filterStr) + string currentFilter = string.Empty; + foreach (char f in filterStr) { - currentInclusion += c; - if (c == delimeter) + currentFilter += f; + if (f == delimeter) { - inclusionsList.Add(currentInclusion.Trim(delimeter)); - currentInclusion = string.Empty; + filters.Add(currentFilter.Trim(delimeter)); + currentFilter = string.Empty; } } - inclusionsList.Add(currentInclusion); // Add final inclusion + filters.Add(currentFilter); // Add final inclusion - foreach (var item in inclusionsList) + foreach (var item in filters) foreach (var file in Directory.GetFiles(fullPath, item, SearchOption.AllDirectories)) { filteredList.Add(file);