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
This commit is contained in:
.kanbn
.prettierignore.vscode
File-Folder-Helper.csprojHelpers
HelperCreateNoteFiles.csHelperHardcodedFileSearchAndSort.csHelperKanbanMetadata.csHelperMarkdown.csHelperPackageFilesByDate.csHelperRenameToOldMoveDeleteOld.csHelperSaveOrCopyContents.csHelperZipFilesByDate.csLineNumber.csMarkdownFile.cs
JenkinsfileModels
Phares/Shared/Models
Program.csWorker.csappsettings.Development.jsonappsettings.Staging.jsonappsettings.jsonpackage-lock.jsonpackage.json
157
Program.cs
157
Program.cs
@ -1,156 +1,27 @@
|
||||
using File_Folder_Helper.Models;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Phares.Shared.Models;
|
||||
using Phares.Shared.Models.Stateless.Methods;
|
||||
using Serilog;
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace File_Folder_Helper;
|
||||
|
||||
internal class Program
|
||||
{
|
||||
|
||||
public static void Secondary(List<string> args)
|
||||
{
|
||||
LoggerConfiguration loggerConfiguration = new();
|
||||
Assembly assembly = Assembly.GetExecutingAssembly();
|
||||
bool debuggerWasAttachedAtLineZero = Debugger.IsAttached || assembly.Location.Contains(@"\bin\Debug");
|
||||
IsEnvironment isEnvironment = new(processesCount: null, nullASPNetCoreEnvironmentIsDevelopment: debuggerWasAttachedAtLineZero, nullASPNetCoreEnvironmentIsProduction: !debuggerWasAttachedAtLineZero);
|
||||
IConfigurationBuilder configurationBuilder = new ConfigurationBuilder()
|
||||
.AddEnvironmentVariables()
|
||||
.AddJsonFile(isEnvironment.AppSettingsFileName, optional: false, reloadOnChange: true);
|
||||
IConfigurationRoot configurationRoot = configurationBuilder.Build();
|
||||
AppSettings appSettings = Models.Stateless.AppSettings.Get(configurationRoot);
|
||||
if (string.IsNullOrEmpty(appSettings.WorkingDirectoryName))
|
||||
throw new Exception("Working directory name must have a value!");
|
||||
string workingDirectory = IWorkingDirectory.GetWorkingDirectory(assembly.GetName().Name, appSettings.WorkingDirectoryName);
|
||||
Environment.SetEnvironmentVariable(nameof(workingDirectory), workingDirectory);
|
||||
_ = ConfigurationLoggerConfigurationExtensions.Configuration(loggerConfiguration.ReadFrom, configurationRoot);
|
||||
Log.Logger = loggerConfiguration.CreateLogger();
|
||||
ILogger log = Log.ForContext<Program>();
|
||||
int silentIndex = args.IndexOf("s");
|
||||
if (silentIndex > -1)
|
||||
args.RemoveAt(silentIndex);
|
||||
try
|
||||
{
|
||||
int? singleCharIndex = null;
|
||||
ConsoleKey consoleKey = ConsoleKey.End;
|
||||
ConsoleKey[] consoleKeys = new ConsoleKey[]
|
||||
{
|
||||
ConsoleKey.A,
|
||||
ConsoleKey.B,
|
||||
ConsoleKey.C,
|
||||
ConsoleKey.D,
|
||||
ConsoleKey.E,
|
||||
ConsoleKey.F,
|
||||
ConsoleKey.L,
|
||||
ConsoleKey.N,
|
||||
ConsoleKey.R,
|
||||
ConsoleKey.T,
|
||||
ConsoleKey.Z,
|
||||
ConsoleKey.Delete
|
||||
};
|
||||
for (int i = 0; i < args.Count; i++)
|
||||
{
|
||||
if (args[i].Length == 1 && Enum.TryParse(args[i], out consoleKey) && consoleKeys.Contains(consoleKey))
|
||||
{
|
||||
singleCharIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (consoleKey is not ConsoleKey.End && !consoleKeys.Contains(consoleKey))
|
||||
consoleKey = ConsoleKey.End;
|
||||
if (singleCharIndex is not null)
|
||||
args.RemoveAt(singleCharIndex.Value);
|
||||
if (!args.Any())
|
||||
log.Information("Must pass a argument!");
|
||||
else if (Directory.Exists(args[0]) && File.Exists(Path.Combine(args[0], string.Concat(Path.GetFileName(args[0]), ".dll"))))
|
||||
Helpers.HelperILMerge.ILMerge(args[0]);
|
||||
else if (Directory.Exists(args[0]))
|
||||
{
|
||||
for (int i = 0; i < int.MaxValue; i++)
|
||||
{
|
||||
if (consoleKeys.Contains(consoleKey))
|
||||
break;
|
||||
log.Information("A) Save (Top Directory Only),");
|
||||
log.Information("B) Save (All Directories),");
|
||||
log.Information("C) Clipboard (Top Directory Only),");
|
||||
log.Information("D) Clipboard (All Directories),");
|
||||
log.Information("E) Clipboard (Top Directory Only and File Name Without Extension),");
|
||||
log.Information("F) Clipboard (All Directories and File Name Without Extension),");
|
||||
log.Information("L) Log Merge (APC Log [0-9{8}]_*.log),");
|
||||
log.Information("N) Create Note Files,");
|
||||
log.Information("R) Rename to old, copy, delete old");
|
||||
log.Information("T) Too long rename");
|
||||
log.Information("Z) Zip file(s) by date,");
|
||||
log.Information("Delete) Delete empty directories,");
|
||||
consoleKey = Console.ReadKey().Key;
|
||||
log.Information(string.Empty);
|
||||
}
|
||||
switch (consoleKey)
|
||||
{
|
||||
case ConsoleKey.A:
|
||||
case ConsoleKey.B:
|
||||
case ConsoleKey.C:
|
||||
case ConsoleKey.E:
|
||||
case ConsoleKey.F:
|
||||
Helpers.HelperSaveOrCopyContents.SaveOrCopyContents(log, args[0], consoleKey);
|
||||
break;
|
||||
case ConsoleKey.L:
|
||||
Helpers.HelperLogMerge.LogMerge(args[0]);
|
||||
break;
|
||||
case ConsoleKey.N:
|
||||
Helpers.HelperCreateNoteFiles.CreateNoteFiles(args[0]);
|
||||
break;
|
||||
case ConsoleKey.R:
|
||||
Helpers.HelperRenameToOldMoveDeleteOldMerge.RenameToOldMoveDeleteOld(log, args[0]);
|
||||
break;
|
||||
case ConsoleKey.T:
|
||||
Helpers.HelperTooLong.TooLong(args[0], delete: false);
|
||||
Helpers.HelperTooLong.TooLong(args[0], delete: true);
|
||||
break;
|
||||
case ConsoleKey.Z:
|
||||
Helpers.HelperZipFilesByDate.ZipFilesByDate(log, args[0]);
|
||||
break;
|
||||
default:
|
||||
switch (consoleKey)
|
||||
{
|
||||
case ConsoleKey.Delete:
|
||||
for (int j = 1; j < 6; j++)
|
||||
{
|
||||
if (!Helpers.HelperDeleteEmptyDirectories.DeleteEmptyDirectories(args[0]))
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new Exception();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
throw new Exception(args[0]);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(string.Concat(ex.Message, Environment.NewLine, ex.StackTrace));
|
||||
}
|
||||
if (silentIndex > -1)
|
||||
Console.WriteLine("Done. Bye");
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Done. Press 'Enter' to end");
|
||||
_ = Console.ReadLine();
|
||||
}
|
||||
}
|
||||
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
if (args is not null)
|
||||
Secondary(args.ToList());
|
||||
else
|
||||
Secondary(new List<string>());
|
||||
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);
|
||||
_ = builder.Configuration.AddEnvironmentVariables();
|
||||
_ = builder.Configuration.AddUserSecrets<Program>();
|
||||
_ = builder.Services.AddSingleton(args.ToList());
|
||||
AppSettings appSettings = Models.Binder.AppSettings.Get(builder.Configuration);
|
||||
_ = builder.Services.AddSingleton(appSettings);
|
||||
_ = builder.Services.AddHostedService<Worker>();
|
||||
using IHost host = builder.Build();
|
||||
ILogger<Program> logger = host.Services.GetRequiredService<ILogger<Program>>();
|
||||
logger.LogCritical(appSettings.Company);
|
||||
host.Run();
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user