From 7defeda67fa9bb2a2efb6bfe93fd4b1a8d0897b9 Mon Sep 17 00:00:00 2001 From: Maggie Kimani Date: Tue, 8 Mar 2022 20:47:58 +0300 Subject: [PATCH 1/2] Add a --clean-output parameter for overwriting existing files --- src/Microsoft.OpenApi.Hidi/OpenApiService.cs | 5 +++++ src/Microsoft.OpenApi.Hidi/Program.cs | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.OpenApi.Hidi/OpenApiService.cs b/src/Microsoft.OpenApi.Hidi/OpenApiService.cs index 1f86e3c06..9e50debf2 100644 --- a/src/Microsoft.OpenApi.Hidi/OpenApiService.cs +++ b/src/Microsoft.OpenApi.Hidi/OpenApiService.cs @@ -31,6 +31,7 @@ public static async Task ProcessOpenApiDocument( string openapi, string csdl, FileInfo output, + bool cleanoutput, OpenApiSpecVersion? version, OpenApiFormat? format, LogLevel loglevel, @@ -69,6 +70,10 @@ string filterbycollection } try { + if (cleanoutput) + { + output.Delete(); + } if (output.Exists) { throw new IOException("The file you're writing to already exists. Please input a new file path."); diff --git a/src/Microsoft.OpenApi.Hidi/Program.cs b/src/Microsoft.OpenApi.Hidi/Program.cs index 95e6f63f2..960031ded 100644 --- a/src/Microsoft.OpenApi.Hidi/Program.cs +++ b/src/Microsoft.OpenApi.Hidi/Program.cs @@ -25,6 +25,9 @@ static async Task Main(string[] args) var outputOption = new Option("--output", () => new FileInfo("./output"), "The output directory path for the generated file.") { Arity = ArgumentArity.ZeroOrOne }; outputOption.AddAlias("-o"); + var cleanOutputOption = new Option("--clean-output", "Overwrite an existing file"); + cleanOutputOption.AddAlias("-co"); + var versionOption = new Option("--version", "OpenAPI specification version"); versionOption.AddAlias("-v"); @@ -62,6 +65,7 @@ static async Task Main(string[] args) descriptionOption, csdlOption, outputOption, + cleanOutputOption, versionOption, formatOption, logLevelOption, @@ -72,8 +76,8 @@ static async Task Main(string[] args) resolveExternalOption, }; - transformCommand.SetHandler ( - OpenApiService.ProcessOpenApiDocument, descriptionOption, csdlOption, outputOption, versionOption, formatOption, logLevelOption, inlineOption, resolveExternalOption, filterByOperationIdsOption, filterByTagsOption, filterByCollectionOption); + transformCommand.SetHandler ( + OpenApiService.ProcessOpenApiDocument, descriptionOption, csdlOption, outputOption, cleanOutputOption, versionOption, formatOption, logLevelOption, inlineOption, resolveExternalOption, filterByOperationIdsOption, filterByTagsOption, filterByCollectionOption); rootCommand.Add(transformCommand); rootCommand.Add(validateCommand); From b785cb9932c0e1cc27e3d8cd996ca83b36e263e9 Mon Sep 17 00:00:00 2001 From: Maggie Kimani Date: Wed, 9 Mar 2022 08:38:55 +0300 Subject: [PATCH 2/2] Add a condition for ensuring the output file path exists before cleaning it --- src/Microsoft.OpenApi.Hidi/OpenApiService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.OpenApi.Hidi/OpenApiService.cs b/src/Microsoft.OpenApi.Hidi/OpenApiService.cs index a961a0e8f..e96317943 100644 --- a/src/Microsoft.OpenApi.Hidi/OpenApiService.cs +++ b/src/Microsoft.OpenApi.Hidi/OpenApiService.cs @@ -56,7 +56,7 @@ CancellationToken cancellationToken { throw new ArgumentNullException(nameof(output)); } - if (cleanoutput) + if (cleanoutput && output.Exists) { output.Delete(); }