From e12e5db0075652fac50d16997d9902284ef535fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Boh=C3=A1=C4=8Dek?= Date: Sun, 15 Jan 2023 11:47:01 +0100 Subject: [PATCH] feat: add support for output directory, matching the name of input --- src/Anonymizer.CLI/Program.cs | 42 ++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/src/Anonymizer.CLI/Program.cs b/src/Anonymizer.CLI/Program.cs index b634731..9cb3110 100644 --- a/src/Anonymizer.CLI/Program.cs +++ b/src/Anonymizer.CLI/Program.cs @@ -33,14 +33,39 @@ public static class Program return Parser.Default.ParseArguments(args) .MapResult ( - options => MakeAsync - (new FileInfo(options.Input), new FileInfo(options.Output), new FileInfo(options.Config)) - .GetAwaiter().GetResult(), + options => + { + var directoryInfo = new DirectoryInfo(options.Output); + var fileInfo = new FileInfo(options.Output); + if (Directory.Exists(options.Output)) + { + fileInfo = null; + } + else + { + directoryInfo = null; + } + + return MakeAsync + ( + new FileInfo(options.Input), + directoryInfo, + fileInfo, + new FileInfo(options.Config) + ) + .GetAwaiter().GetResult(); + }, _ => 1 ); } - private static async Task MakeAsync(FileInfo input, FileInfo output, FileInfo config) + private static async Task MakeAsync + ( + FileInfo input, + DirectoryInfo? outputDirectory, + FileInfo? outputFile, + FileInfo config + ) { if (!input.Exists) { @@ -48,7 +73,12 @@ public static class Program return 1; } - if (output.Exists) + if (outputFile is null) + { + outputFile = new FileInfo(Path.Join(outputDirectory!.FullName, input.Name)); + } + + if (outputFile.Exists) { Console.Error.WriteLine("The output file already exists."); return 1; @@ -76,7 +106,7 @@ public static class Program using var fileSink = new FileSink ( input.FullName, - output.FullName, + outputFile.FullName, services.GetRequiredService>().Value ); -- 2.48.1