public virtual string GenerateCode(IProgressReporter pGenerateProgress) { try { pGenerateProgress.Progress(10); var outputFile = FileHelper.CreateRandomFile(); var command = GetCommand(); var arguments = GetArguments(outputFile); pGenerateProgress.Progress(30); processLauncher.Start(command, arguments, Path.GetDirectoryName(SwaggerFile)); pGenerateProgress.Progress(80); return(FileHelper.ReadThenDelete(outputFile)); } catch (Exception e) { throw new CodeGeneratorException(GetType().Name, e); } finally { pGenerateProgress.Progress(90); } }
public string GetJavaExePath() { var javaPath = options.JavaPath; if (!string.IsNullOrWhiteSpace(javaPath) && (File.Exists(javaPath) || javaPath != "java")) { return(javaPath); } try { Trace.WriteLine("Checking Java version"); processLauncher.Start("java", "-version"); return("java"); } catch (Exception e) { Trace.WriteLine("Java not installed using default settings"); Trace.WriteLine(e); } if (string.IsNullOrWhiteSpace(options.JavaPath)) { javaPath = PathProvider.GetJavaPath(); } if (File.Exists(javaPath)) { return(javaPath); } throw new FileNotFoundException("Unable to find Java"); }
public void InstallNpmPackage(string packageName) { Trace.WriteLine($"Attempting to install {packageName} through NPM"); processLauncher.Start( PathProvider.GetNpmPath(), $"install -g {packageName}"); Trace.WriteLine($"{packageName} installed successfully through NPM"); }
private async Task AddRequiredPackages(Project project) { foreach (var package in dependencyProvider.GetDependencies(CodeGeneratorType)) { var arguments = $"add package {package.Name} --version {package.Version}"; await Task.Run(() => process.Start("dotnet", arguments, project.ItemDirectory)); } project.NotifyModified(string.Empty); await project.RefreshProjectBuilder(); }
public string GenerateCode(IProgressReporter pGenerateProgress) { pGenerateProgress?.Progress(10); TryRemoveSwaggerJsonSpec(nswagStudioFile); var command = GetNSwagPath(); var arguments = $"run \"{nswagStudioFile}\""; var workingDirectory = Path.GetDirectoryName(nswagStudioFile); processLauncher.Start(command, arguments, workingDirectory); pGenerateProgress?.Progress(90); return(null); }
public string GenerateCode(IProgressReporter pGenerateProgress) { try { pGenerateProgress.Progress(10); var jarFile = options.OpenApiGeneratorPath; if (!File.Exists(jarFile)) { Trace.WriteLine(jarFile + " does not exist"); jarFile = dependencyInstaller.InstallOpenApiGenerator(); } pGenerateProgress.Progress(30); var output = Path.Combine( Path.GetDirectoryName(swaggerFile) ?? throw new InvalidOperationException(), Guid.NewGuid().ToString("N"), "TempApiClient"); Directory.CreateDirectory(output); pGenerateProgress.Progress(40); var arguments = $"-jar \"{jarFile}\" generate " + "--generator-name csharp-netcore " + $"--input-spec \"{Path.GetFileName(swaggerFile)}\" " + $"--output \"{output}\" " + $"--package-name \"{defaultNamespace}\" " + "--global-property apiTests=false,modelTests=false " + "--skip-overwrite " + $"--additional-properties optionalEmitDefaultValues={openApiGeneratorOptions.EmitDefaultValue} "; processLauncher.Start( javaPathProvider.GetJavaExePath(), arguments, Path.GetDirectoryName(swaggerFile)); pGenerateProgress.Progress(80); return(CSharpFileMerger.MergeFilesAndDeleteSource(output)); } finally { pGenerateProgress.Progress(90); } }
private bool CheckJavaVersion(string javaPath) { try { Trace.WriteLine("Checking Java version"); processLauncher.Start(javaPath, "-version"); return(true); } catch (Exception e) { Logger.Instance.TrackError(e); Trace.WriteLine($"Unable to start Java from path: {javaPath}"); Trace.WriteLine(e); } return(false); }
public string GenerateCode(IProgressReporter pGenerateProgress) { pGenerateProgress?.Progress(10); lock (SyncLock) { TryRemoveSwaggerJsonSpec(nswagStudioFile); pGenerateProgress?.Progress(25); var command = GetNSwagPath(); pGenerateProgress?.Progress(50); var arguments = $"run \"{nswagStudioFile}\""; processLauncher.Start(command, arguments, Path.GetDirectoryName(nswagStudioFile)); } pGenerateProgress?.Progress(100); return(null); }
public string GenerateCode(IProgressReporter pGenerateProgress) { try { pGenerateProgress.Progress(10); var jarFile = options.OpenApiGeneratorPath; if (!File.Exists(jarFile)) { Trace.WriteLine(jarFile + " does not exist"); jarFile = DependencyDownloader.InstallOpenApiGenerator(); } pGenerateProgress.Progress(30); var output = Path.Combine( Path.GetDirectoryName(swaggerFile) ?? throw new InvalidOperationException(), "TempApiClient"); Directory.CreateDirectory(output); pGenerateProgress.Progress(40); var arguments = $"-jar \"{jarFile}\" generate " + "-g csharp " + $"--input-spec \"{swaggerFile}\" " + $"--output \"{output}\" " + "-DapiTests=false -DmodelTests=false " + $"-DpackageName={defaultNamespace} " + "--skip-overwrite "; processLauncher.Start(javaPathProvider.GetJavaExePath(), arguments); pGenerateProgress.Progress(80); return(CSharpFileMerger.MergeFilesAndDeleteSource(output)); } finally { pGenerateProgress.Progress(90); } }
public string GenerateCode(IProgressReporter pGenerateProgress) { pGenerateProgress?.Progress(10); var command = options.NSwagPath; if (!File.Exists(command)) { Trace.WriteLine(command + " does not exist! Retrying with default NSwag.exe path"); command = PathProvider.GetNSwagPath(); if (!File.Exists(command)) { throw new InvalidOperationException("NSwag not installed. Please install NSwagStudio"); } } TryRemoveSwaggerJsonSpec(nswagStudioFile); processLauncher.Start(command, $"run \"{nswagStudioFile}\""); pGenerateProgress?.Progress(90); return(null); }
public virtual string GenerateCode(IProgressReporter pGenerateProgress) { try { pGenerateProgress.Progress(10); var outputFile = Path.GetTempFileName(); var command = GetCommand(); var arguments = GetArguments(outputFile); pGenerateProgress.Progress(30); processLauncher.Start(command, arguments); pGenerateProgress.Progress(80); return(FileHelper.ReadThenDelete(outputFile)); } finally { pGenerateProgress.Progress(90); } }
public virtual string GenerateCode(IProgressReporter pGenerateProgress) { try { pGenerateProgress.Progress(10); var path = Path.GetDirectoryName(SwaggerFile); var outputFile = Path.Combine( path ?? throw new InvalidOperationException(), $"{Guid.NewGuid()}.cs"); var command = GetCommand(); var arguments = GetArguments(outputFile); pGenerateProgress.Progress(30); processLauncher.Start(command, arguments); pGenerateProgress.Progress(80); return(FileHelper.ReadThenDelete(outputFile)); } finally { pGenerateProgress.Progress(90); } }
private string OnGenerateCode(IProgressReporter pGenerateProgress) { try { pGenerateProgress.Progress(10); var command = PathProvider.GetAutoRestPath(); pGenerateProgress.Progress(30); dependencyInstaller.InstallAutoRest(); pGenerateProgress.Progress(50); var document = documentFactory.GetDocumentAsync(SwaggerFile).GetAwaiter().GetResult(); if (!string.IsNullOrEmpty(document.OpenApi) && Version.TryParse(document.OpenApi, out var openApiVersion) && openApiVersion > Version.Parse("3.0.0")) { var outputFolder = Path.Combine( Path.GetDirectoryName(SwaggerFile) ?? throw new InvalidOperationException(), Guid.NewGuid().ToString("N"), "TempApiClient"); if (!Directory.Exists(outputFolder)) { Directory.CreateDirectory(outputFolder); } processLauncher.Start( command, argumentProvider.GetArguments( outputFolder, SwaggerFile, DefaultNamespace), Path.GetDirectoryName(SwaggerFile)); pGenerateProgress.Progress(80); return(CSharpFileMerger.MergeFilesAndDeleteSource(outputFolder)); } else { var outputFile = FileHelper.CreateRandomFile(); var arguments = argumentProvider.GetLegacyArguments( outputFile, SwaggerFile, DefaultNamespace); try { processLauncher.Start( command, arguments, Path.GetDirectoryName(SwaggerFile)); } catch (ProcessLaunchException) { processLauncher.Start( command, arguments.Replace("--version=", "--version "), Path.GetDirectoryName(SwaggerFile)); } finally { pGenerateProgress.Progress(80); } return(FileHelper.ReadThenDelete(outputFile)); } } finally { pGenerateProgress.Progress(90); } }