diff --git a/DevConsole/Program.cs b/DevConsole/Program.cs
index e3a8d54..8b17ec0 100644
--- a/DevConsole/Program.cs
+++ b/DevConsole/Program.cs
@@ -214,8 +214,12 @@ namespace DevConsole
Console.WriteLine($"Full: {fullPath}");
Console.WriteLine($"Relative Path: {relPath}");
- Console.WriteLine("Please enter the pattern for the inclusion filter and then\nthe exclusion filter:");
- PrintListValues(Helpers.Filters.FilterDirectory(fullPath, Console.ReadLine(), Console.ReadLine()));
+ Console.WriteLine("Please enter the filter patterns required.");
+ Console.Write("\nInclusion Filter: ");
+ var i = Console.ReadLine();
+ Console.Write("Exclusion Filter: ");
+ var e = Console.ReadLine();
+ PrintListValues(new ManifestFilter().Build(fullPath, i, e));
//FSManipulation.CopyDirectory(
// fullPath,
diff --git a/FireLance/Helpers.cs b/FireLance/Helpers.cs
index 256332f..36967b1 100644
--- a/FireLance/Helpers.cs
+++ b/FireLance/Helpers.cs
@@ -1,8 +1,8 @@
using Microsoft.Win32;
using System;
using System.Collections.Generic;
-using System.IO;
using System.Linq;
+using System.Reflection.Metadata;
namespace FirelanceMgr
{
@@ -48,103 +48,5 @@ namespace FirelanceMgr
return result;
}
}
-
- public static class Filters
- {
- ///
- /// To deprecate.
- ///
- ///
- ///
- public static List GetFileList(string fullPath)
- {
- var result = new List();
- foreach (var file in Directory.GetFiles(fullPath))
- {
- result.Add(file);
- }
-
- return result;
- }
-
- public static List FilterDirectory(string fullPath, string inclusionStr, string exclusionStr)
- {
- var incBuilder = PatternBuilder(inclusionStr);
- var excBuilder = PatternBuilder(exclusionStr);
- var inclusionList = ManifestBuilder(incBuilder, fullPath);
- var exclusionList = ManifestBuilder(excBuilder, fullPath);
-
- return inclusionList.Where(x => exclusionList.All(y => !x.Contains(y))).ToList(); ;
- }
-
- private static List PatternBuilder(string filterStr)
- {
- var filters = new List();
-
- if (filterStr != string.Empty)
- {
- char delimeter = '|';
- string currentFilter = string.Empty;
- foreach (char f in filterStr)
- {
- currentFilter += f;
- if (f == delimeter)
- {
- filters.Add(currentFilter.Trim(delimeter));
- currentFilter = string.Empty;
- }
- }
- filters.Add(currentFilter); // Add final inclusion
- }
-
- return filters;
- }
-
- private static List ManifestBuilder(List filters, string fullPath)
- {
- var filteredList = new List();
-
- foreach (var f in filters)
- {
- if (f == "*.*")
- {
- // Pattern: All
- foreach (var file in Directory.GetFiles(fullPath, "*", SearchOption.AllDirectories))
- {
- filteredList.Add(file);
- }
- }
- else if (f.Contains(@"\*"))
- {
- // Pattern: Directory
- foreach (var dir in Directory.GetDirectories(fullPath, "*", SearchOption.AllDirectories))
- {
- if (dir.Contains(f.Substring(0, f.LastIndexOf("\\")))) { filteredList.Add(dir); }
- }
- }
- else
- {
- if (f.Contains("*"))
- {
- // Pattern: File with wildcard
- foreach (var file in Directory.GetFiles(fullPath, f, SearchOption.AllDirectories))
- {
- filteredList.Add(file);
- }
- }
- else
- {
- // Pattern: File
- if (File.Exists(f))
- {
- filteredList.Add(f);
- }
- }
- }
- }
-
- return filteredList;
- }
- }
}
}
diff --git a/FireLance/ManifestFilter.cs b/FireLance/ManifestFilter.cs
new file mode 100644
index 0000000..b36dadf
--- /dev/null
+++ b/FireLance/ManifestFilter.cs
@@ -0,0 +1,83 @@
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+
+namespace FirelanceMgr
+{
+ public class ManifestFilter
+ {
+ public List Build(string fullPath, string inclusionStr, string exclusionStr)
+ {
+ var incPatterns = PatternBuilder(inclusionStr);
+ var excPatterns = PatternBuilder(exclusionStr);
+ var incFiles = FileManifestBuilder(incPatterns, fullPath);
+ var excFiles = FileManifestBuilder(excPatterns, fullPath);
+
+ return incFiles.Where(x => excFiles.All(y => !x.Contains(y))).Distinct().ToList(); ;
+ }
+
+ private List PatternBuilder(string filterStr)
+ {
+ var filters = new List();
+
+ if (filterStr != string.Empty)
+ {
+ char delimeter = '|';
+ string currentFilter = string.Empty;
+ foreach (char f in filterStr)
+ {
+ currentFilter += f;
+ if (f == delimeter)
+ {
+ filters.Add(currentFilter.Trim(delimeter));
+ currentFilter = string.Empty;
+ }
+ }
+ filters.Add(currentFilter); // Add final pending inclusion
+ }
+
+ return filters;
+ }
+
+ private List FileManifestBuilder(List filters, string fullPath)
+ {
+ var filteredList = new List();
+
+ foreach (var f in filters)
+ {
+ if (f == "*.*") // Pattern: All
+ {
+ foreach (var file in Directory.GetFiles(fullPath, "*", SearchOption.AllDirectories))
+ {
+ filteredList.Add(file);
+ }
+ }
+ else if (f.Contains(@"\*")) // Pattern: Directory
+ {
+ foreach (var dir in Directory.GetDirectories(fullPath, "*", SearchOption.AllDirectories))
+ foreach (var file in Directory.GetFiles(dir, "*", SearchOption.AllDirectories))
+ {
+ filteredList.Add(file);
+ }
+ }
+ else
+ {
+ if (f.Contains("*")) // Pattern: File with wildcard
+ {
+ foreach (var file in Directory.GetFiles(fullPath, f, SearchOption.AllDirectories))
+ {
+ filteredList.Add(file);
+ }
+ }
+ else // Pattern: File
+ {
+ if (File.Exists(f)){ filteredList.Add(f); }
+ }
+ }
+ }
+
+ return filteredList;
+ }
+ }
+
+}