file-folder-helper/Helpers/HelperSaveOrCopyContents.cs
Mike Phares 229b508ae1 Dependency Injection Style
AOT Compiling
Switched to Secret from Development json file
Added Kanbn
Humanizer
HelperCreateNoteFiles.CleanExistingFiles
HelperPackageFilesByDate
Added SRP
Helper Hardcoded File Search and Sort
Set Date from Zip Entry
2023-07-08 10:05:52 -07:00

185 lines
8.1 KiB
C#

using Microsoft.Extensions.Logging;
using System.Text;
namespace File_Folder_Helper.Helpers;
internal static class HelperSaveOrCopyContents
{
internal static void SaveOrCopyContents(ILogger log, string argsZero, ConsoleKey consoleKey)
{
SearchOption searchOption;
bool fileNameWithoutExtension;
bool alongSideTopDirectoryOnly = false;
bool alongSideAllDirectories = false;
bool clipboardTopDirectoryOnly = false;
switch (consoleKey)
{
case ConsoleKey.A:
alongSideTopDirectoryOnly = true;
searchOption = SearchOption.TopDirectoryOnly;
fileNameWithoutExtension = false;
break;
case ConsoleKey.B:
alongSideAllDirectories = true;
searchOption = SearchOption.AllDirectories;
fileNameWithoutExtension = false;
break;
case ConsoleKey.C:
clipboardTopDirectoryOnly = true;
searchOption = SearchOption.TopDirectoryOnly;
fileNameWithoutExtension = false;
break;
case ConsoleKey.D:
clipboardTopDirectoryOnly = true;
searchOption = SearchOption.AllDirectories;
fileNameWithoutExtension = false;
break;
case ConsoleKey.E:
clipboardTopDirectoryOnly = true;
searchOption = SearchOption.TopDirectoryOnly;
fileNameWithoutExtension = true;
break;
case ConsoleKey.F:
clipboardTopDirectoryOnly = true;
searchOption = SearchOption.AllDirectories;
fileNameWithoutExtension = true;
break;
default:
throw new Exception();
}
log.LogInformation("D) Directory, F) File or B) Both?");
ConsoleKey dfb = Console.ReadKey().Key;
log.LogInformation(string.Empty);
if (dfb is not ConsoleKey.D and not ConsoleKey.F and not ConsoleKey.B)
throw new Exception("Not valid");
else
{
string fileName = dfb switch
{
ConsoleKey.D => "Directories",
ConsoleKey.F => "Files",
ConsoleKey.B => "Both",
_ => throw new Exception(),
};
long now = DateTime.Now.Ticks;
StringBuilder data = new();
string[] dataCollection;
string? parentDirectory = Path.GetDirectoryName(argsZero);
if (string.IsNullOrEmpty(parentDirectory))
throw new Exception();
string filePathAndName = Path.Combine(parentDirectory, $"{fileName}.txt");
if (alongSideTopDirectoryOnly)
File.WriteAllText(filePathAndName, string.Empty);
else if (alongSideAllDirectories)
File.WriteAllText(filePathAndName, string.Concat(argsZero, Environment.NewLine, "Start", Environment.NewLine));
switch (dfb)
{
case ConsoleKey.D:
if (alongSideTopDirectoryOnly || clipboardTopDirectoryOnly)
{
dataCollection = Directory.GetDirectories(argsZero, "*", searchOption);
if (!(dataCollection == null) && dataCollection.Length > 0)
{
foreach (string s in dataCollection)
{
if (fileNameWithoutExtension)
_ = data.Append('\'').Append(Path.GetFileNameWithoutExtension(s)).Append("', ");
else
_ = data.AppendLine(s);
}
}
}
else if (alongSideAllDirectories)
{
dataCollection = Directory.GetDirectories(argsZero, "*", searchOption);
if (!(dataCollection == null) && dataCollection.Length > 0)
{
foreach (string s in dataCollection)
File.AppendAllText(filePathAndName, string.Concat(s.Replace(argsZero, "../"), Environment.NewLine));
}
}
else
throw new Exception();
break;
case ConsoleKey.F:
if (alongSideTopDirectoryOnly || clipboardTopDirectoryOnly)
{
dataCollection = Directory.GetFiles(argsZero, "*", searchOption);
if (!(dataCollection == null) && dataCollection.Length > 0)
{
foreach (string s in dataCollection)
{
if (fileNameWithoutExtension)
_ = data.Append('\'').Append(Path.GetFileNameWithoutExtension(s)).Append("', ");
else
_ = data.AppendLine(s);
}
}
}
else if (alongSideAllDirectories)
{
dataCollection = Directory.GetFiles(argsZero, "*", searchOption);
if (!(dataCollection == null) && dataCollection.Length > 0)
{
foreach (string s in dataCollection)
File.AppendAllText(filePathAndName, string.Concat(s.Replace(argsZero, "../"), Environment.NewLine));
}
}
else
throw new Exception();
break;
case ConsoleKey.B:
if (alongSideTopDirectoryOnly || clipboardTopDirectoryOnly)
{
dataCollection = Directory.GetFiles(argsZero, "*", searchOption);
if (!(dataCollection == null) && dataCollection.Length > 0)
{
foreach (string s in dataCollection)
{
if (fileNameWithoutExtension)
_ = data.Append('\'').Append(Path.GetFileNameWithoutExtension(s)).Append("', ");
else
_ = data.AppendLine(s);
}
}
}
else if (alongSideAllDirectories)
{
dataCollection = Directory.GetDirectories(argsZero, "*", searchOption);
if (!(dataCollection == null) && dataCollection.Length > 0)
{
foreach (string s in dataCollection)
File.AppendAllText(filePathAndName, string.Concat(s.Replace(argsZero, "../"), Environment.NewLine));
}
}
else
throw new Exception();
break;
default:
throw new Exception();
}
TimeSpan timeSpan = new(DateTime.Now.Ticks - now);
log.LogInformation(string.Concat(timeSpan.TotalSeconds, " TotalSeconds"));
if (alongSideTopDirectoryOnly)
{
File.WriteAllText(filePathAndName, data.ToString());
log.LogInformation("Data written");
}
else if (clipboardTopDirectoryOnly)
{
TextCopy.ClipboardService.SetText(data.ToString());
log.LogInformation("Data stored in clipboard");
}
else if (alongSideAllDirectories)
{
File.AppendAllText(filePathAndName, "Done");
log.LogInformation("Data written");
}
else
throw new Exception();
log.LogInformation("Press any key to close");
}
}
}