Exemple #1
0
        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();
        }
Exemple #5
0
        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);
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        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);
            }
        }
Exemple #12
0
        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);
            }
        }
Exemple #13
0
        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);
            }
        }