Firelance 0.1.5.1
- Refactored filters - Removed path helpers for minimal redundancy - Crude but functional CopyDirectory function
This commit is contained in:
@@ -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<string>() { Helpers.Converters.GetSpecialToAbsolutePath("%DOCUMENTS%") }, @"BioWare\Mass Effect Andromeda").First();
|
||||
string relPath = Helpers.Converters.MakeRelativePath(new List<string>() { 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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
-32
@@ -29,28 +29,6 @@ namespace FirelanceMgr
|
||||
|
||||
return d.Where(x => x.Key.Contains(specialPath)).Select(x => x.Value).Single();
|
||||
}
|
||||
|
||||
public static List<string> MakeRelativePath(List<string> directory, string fullPath)
|
||||
{
|
||||
var result = new List<string>();
|
||||
foreach (var item in directory)
|
||||
{
|
||||
if (fullPath.StartsWith(item.ToString())) { result.Add(fullPath.TrimStart(item.ToCharArray())); }
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<string> MakeAbsolutePath(List<string> directory, string relPath)
|
||||
{
|
||||
var result = new List<string>();
|
||||
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<string> FilterDirectory (string fullPath, string inclusionStr, string exclusionStr)
|
||||
public static List<string> FilterDirectory(string fullPath, string inclusionStr, string exclusionStr)
|
||||
{
|
||||
var filteredList = new List<string>();
|
||||
var inclusionList = Builder(fullPath, inclusionStr);
|
||||
@@ -106,24 +84,24 @@ namespace FirelanceMgr
|
||||
private static List<string> Builder(string fullPath, string filterStr)
|
||||
{
|
||||
var filteredList = new List<string>();
|
||||
var inclusionsList = new List<string>();
|
||||
var filters = new List<string>();
|
||||
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user