private async Task OnExecuteAsync(DTE dte, AsyncPackage package) { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); var result = EnterOpenApiSpecDialog.GetResult(); if (result == null) { return; } var selectedItem = ProjectExtensions.GetSelectedItem(); var folder = FindFolder(selectedItem, dte); if (string.IsNullOrWhiteSpace(folder)) { Trace.WriteLine("Unable to get folder name"); return; } var contents = result.OpenApiSpecification; var filename = result.OutputFilename + ".json"; if (CodeGenerator == SupportedCodeGenerator.NSwagStudio) { var outputNamespace = ProjectExtensions.GetActiveProject(dte)?.GetTopLevelNamespace(); contents = await NSwagStudioFileHelper.CreateNSwagStudioFileAsync( result, new NSwagStudioOptions(), outputNamespace); filename = filename.Replace(".json", ".nswag"); } var filePath = Path.Combine(folder, filename); File.WriteAllText(filePath, contents); var fileInfo = new FileInfo(filePath); var project = ProjectExtensions.GetActiveProject(dte); var projectItem = project.AddFileToProject(dte, fileInfo, "None"); projectItem.Properties.Item("BuildAction").Value = prjBuildAction.prjBuildActionNone; if (CodeGenerator != SupportedCodeGenerator.NSwagStudio) { var customTool = CodeGenerator.GetCustomToolName(); projectItem.Properties.Item("CustomTool").Value = customTool; } else { var generator = new NSwagStudioCodeGenerator(filePath, new CustomPathOptions(), new ProcessLauncher()); generator.GenerateCode(null); dynamic nswag = JsonConvert.DeserializeObject(contents); var nswagOutput = nswag.codeGenerators.swaggerToCSharpClient.output.ToString(); project.AddFileToProject(dte, new FileInfo(Path.Combine(folder, nswagOutput))); } await project.InstallMissingPackagesAsync(package, CodeGenerator); }
public void Reads_NSwagPath_From_Options( [Frozen] IGeneralOptions options, IProgressReporter progressReporter, NSwagStudioCodeGenerator sut) { sut.GenerateCode(progressReporter); Mock.Get(options).Verify(c => c.NSwagPath); }
public void NSwagStudio_GenerateCode_Returns_Null( IProgressReporter progressReporter, NSwagStudioCodeGenerator sut) { sut.GenerateCode(progressReporter) .Should() .BeNull(); }
private static async Task OnExecuteAsync(DTE dte, AsyncPackage package) { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); var item = dte.SelectedItems.Item(1).ProjectItem; var nswagStudioFile = item.FileNames[0]; var codeGenerator = new NSwagStudioCodeGenerator(nswagStudioFile, new CustomPathOptions(), new ProcessLauncher()); codeGenerator.GenerateCode(null); var project = ProjectExtensions.GetActiveProject(dte); await project.InstallMissingPackagesAsync(package, SupportedCodeGenerator.NSwag); }
public void Launches_NSwag( [Frozen] IProcessLauncher process, IProgressReporter progressReporter, NSwagStudioCodeGenerator sut) { sut.GenerateCode(progressReporter); Mock.Get(process) .Verify( c => c.Start( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())); }