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); }
private async Task OnExecuteAsync(DTE dte, AsyncPackage package) { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); var item = dte.SelectedItems.Item(1).ProjectItem; if (!SupportsYaml && item.Name.EndsWith("yaml", StringComparison.OrdinalIgnoreCase)) { const string message = "Specified code generator doesn't support YAML files"; MessageBox.Show(message, "Not Supported"); Trace.WriteLine(message); return; } item.Properties.Item("CustomTool").Value = typeof(T).Name; var name = typeof(T).Name.Replace("CodeGenerator", string.Empty); Trace.WriteLine($"Generating code using {name}"); var project = ProjectExtensions.GetActiveProject(dte); await project.InstallMissingPackagesAsync( package, typeof(T).GetSupportedCodeGenerator()); }
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); }
private async Task OnExecuteAsync(DTE dte, AsyncPackage package) { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); string name = typeof(T).Name.Replace("CodeGenerator", string.Empty); Trace.WriteLine($"Generating code using {name}"); var item = dte.SelectedItems.Item(1).ProjectItem; item.Properties.Item("CustomTool").Value = typeof(T).Name; var project = ProjectExtensions.GetActiveProject(dte); await project.InstallMissingPackagesAsync(package, typeof(T).GetSupportedCodeGenerator()); }
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"; 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; var customTool = CodeGenerator.GetCustomToolName(); projectItem.Properties.Item("CustomTool").Value = customTool; await project.InstallMissingPackagesAsync(package, CodeGenerator); }
protected override async Task OnExecuteAsync(DTE dte, AsyncPackage package) { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); var project = ProjectExtensions.GetActiveProject(dte); var type = typeof(AutoRestCodeGenerator); var item = dte.SelectedItems.Item(1).ProjectItem; item.Properties.Item("CustomTool").Value = type.Name; var name = type.Name.Replace("CodeGenerator", string.Empty); Trace.WriteLine($"Generating code using {name}"); var documentFactory = new OpenApiDocumentFactory(); var swaggerFile = item.FileNames[0]; var document = await documentFactory.GetDocumentAsync(swaggerFile); if (!string.IsNullOrEmpty(document.OpenApi) && Version.TryParse(document.OpenApi, out var openApiVersion) && openApiVersion > Version.Parse("3.0.0")) { await project.InstallMissingPackagesAsync( package, SupportedCodeGenerator.AutoRestV3); await project.UpdatePropertyGroupsAsync( AutoRestConstants.PropertyGroups); } else { await project.InstallMissingPackagesAsync( package, type.GetSupportedCodeGenerator()); } }