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);
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 5
0
        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());
            }
        }