diff --git a/src/Microsoft.OpenApi.Hidi/OpenApiService.cs b/src/Microsoft.OpenApi.Hidi/OpenApiService.cs index ba8b84e0e..2fdcd23aa 100644 --- a/src/Microsoft.OpenApi.Hidi/OpenApiService.cs +++ b/src/Microsoft.OpenApi.Hidi/OpenApiService.cs @@ -33,6 +33,7 @@ public static async Task ProcessOpenApiDocument( string openapi, string csdl, FileInfo output, + bool cleanoutput, string? version, OpenApiFormat? format, LogLevel loglevel, @@ -56,6 +57,10 @@ CancellationToken cancellationToken { throw new ArgumentNullException(nameof(output)); } + if (cleanoutput && output.Exists) + { + output.Delete(); + } if (output.Exists) { throw new IOException($"The file {output} 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 24abb4a98..c83d8fd17 100644 --- a/src/Microsoft.OpenApi.Hidi/Program.cs +++ b/src/Microsoft.OpenApi.Hidi/Program.cs @@ -26,6 +26,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"); @@ -63,6 +66,7 @@ static async Task Main(string[] args) descriptionOption, csdlOption, outputOption, + cleanOutputOption, versionOption, formatOption, logLevelOption, @@ -73,7 +77,7 @@ static async Task Main(string[] args) resolveExternalOption, }; - transformCommand.SetHandler ( + transformCommand.SetHandler ( OpenApiService.ProcessOpenApiDocument, descriptionOption, csdlOption, outputOption, versionOption, formatOption, logLevelOption, inlineOption, resolveExternalOption, filterByOperationIdsOption, filterByTagsOption, filterByCollectionOption); rootCommand.Add(transformCommand);