Пример #1
0
        public static void RunTests <T>(Settings settings, string resultFolder)
        {
            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }

            if (resultFolder == null)
            {
                throw new ArgumentNullException("settings");
            }

            settings.FileSystem = new MemoryFileSystem();
            settings.FileSystem.WriteFile("AutoRest.json", File.ReadAllText("AutoRest.json"));
            settings.FileSystem.CreateDirectory(Path.GetDirectoryName(settings.Input));
            settings.FileSystem.WriteFile(settings.Input, File.ReadAllText(settings.Input));
            var flavor =
                (CodeGenerator)typeof(T).GetConstructor(new[] { typeof(Settings) }).Invoke(new object[] { settings });

            settings.CodeGenerator = flavor.Name;

            var expectedWithSeparator = "Expected" + Path.DirectorySeparatorChar;
            var specFileName          = resultFolder.StartsWith(expectedWithSeparator, StringComparison.Ordinal)
                ? resultFolder.Substring(expectedWithSeparator.Length)
                : resultFolder;

            settings.Namespace = string.IsNullOrEmpty(settings.Namespace)
                ? "Fixtures." + (flavor.Name.Contains("Azure") ? "Azure." : "") + specFileName.
                                 Replace(".cs", "").Replace(".Cs", "").Replace(".java", "").
                                 Replace(".js", "").Replace(".", "").
                                 Replace(Path.DirectorySeparatorChar.ToString(), "").Replace("-", "")
                : settings.Namespace;

            AutoRest.Generate(settings);
            Assert.NotEmpty(((MemoryFileSystem)settings.FileSystem).VirtualStore);

            var actualFiles   = settings.FileSystem.GetFiles("X:\\Output", "*.*", SearchOption.AllDirectories).OrderBy(f => f).ToArray();
            var expectedFiles = Directory.GetFiles(resultFolder, "*.*", SearchOption.AllDirectories).OrderBy(f => f).ToArray();

            Assert.Equal(expectedFiles.Length, actualFiles.Length);

            for (int i = 0; i < expectedFiles.Length; i++)
            {
                var actualFile   = actualFiles[i];
                var expectedFile = expectedFiles[i];
                EnsureFilesMatch(File.ReadAllText(expectedFile), settings.FileSystem.ReadFileAsText(actualFile));
            }
        }
Пример #2
0
        protected void GenerateClient(string swagger, string destFolder)
        {
            try
            {
                Directory.Delete(destFolder, true);
            }
            catch (DirectoryNotFoundException) { }

            AutoRest.Generate(new Settings
            {
                Input           = swagger,
                OutputDirectory = destFolder,
                CodeGenerator   = CodeGenerator,
                Modeler         = Modeler,
                Namespace       = Namespace
            });

            Assert.True(Directory.Exists(destFolder), String.Format("Client generation for \"{0}\" failed", swagger));
        }
Пример #3
0
        private static int Main(string[] args)
        {
            int exitCode = (int)ExitCode.Error;

            try
            {
                Settings settings = null;
                try
                {
                    settings = Settings.Create(args);
                    if (settings.ShowHelp && IsShowMarkdownHelpIncluded(args))
                    {
                        Console.WriteLine(HelpGenerator.Generate(Resources.HelpMarkdownTemplate, settings));
                    }
                    else if (settings.ShowHelp)
                    {
                        Console.WriteLine(HelpGenerator.Generate(Resources.HelpTextTemplate, settings));
                    }
                    else
                    {
                        AutoRest.Generate(settings);
                    }
                }
                catch (CodeGenerationException)
                {
                    // Do not add the CodeGenerationException again. Will be written in finally block
                }
                catch (Exception exception)
                {
                    Logger.LogError(exception, exception.Message);
                }
                finally
                {
                    if (
                        Logger.Entries.Any(
                            e => e.Severity == LogEntrySeverity.Error || e.Severity == LogEntrySeverity.Fatal))
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                    }
                    else if (Logger.Entries.Any(e => e.Severity == LogEntrySeverity.Warning))
                    {
                        Console.ForegroundColor = ConsoleColor.Yellow;
                    }

                    if (settings != null && !settings.ShowHelp)
                    {
                        if (Logger.Entries.Any(e => e.Severity == LogEntrySeverity.Error || e.Severity == LogEntrySeverity.Fatal))
                        {
                            Console.WriteLine(Resources.GenerationFailed);
                            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "{0} {1}",
                                                            typeof(Program).Assembly.ManifestModule.Name,
                                                            string.Join(" ", args)));
                        }
                        else
                        {
                            Console.WriteLine(Resources.GenerationComplete,
                                              settings.CodeGenerator, settings.Input);
                            exitCode = (int)ExitCode.Success;
                        }
                    }

                    Console.ResetColor();
                    // Include LogEntrySeverity.Infos for verbose logging.
                    if (args.Any(a => "-Verbose".Equals(a, StringComparison.OrdinalIgnoreCase)))
                    {
                        Console.ForegroundColor = ConsoleColor.White;
                        Logger.WriteInfos(Console.Out);
                    }

                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Logger.WriteWarnings(Console.Out);

                    Console.ForegroundColor = ConsoleColor.Red;
                    Logger.WriteErrors(Console.Error,
                                       args.Any(a => "-Verbose".Equals(a, StringComparison.OrdinalIgnoreCase)));

                    Console.ResetColor();
                }
            }
            catch (Exception exception)
            {
                Console.Error.WriteLine(Resources.ConsoleErrorMessage, exception.Message);
                Console.Error.WriteLine(Resources.ConsoleErrorStackTrace, exception.StackTrace);
            }
            return(exitCode);
        }
Пример #4
0
        private static void Main(string[] args)
        {
            try
            {
                if (IsShowMarkdownHelpIncluded(args))
                {
                    Console.WriteLine(HelpGenerator.Generate(Resources.HelpMarkdownTemplate));
                }
                else if (IsShowHelpIncluded(args))
                {
                    Console.WriteLine(HelpGenerator.Generate(Resources.HelpTextTemplate));
                }
                else
                {
                    Settings settings = null;
                    try
                    {
                        settings = Settings.Create(args);
                        AutoRest.Generate(settings);
                        var codeGenerator = ExtensionsLoader.GetCodeGenerator(settings);
                        Console.WriteLine(codeGenerator.UsageInstructions);
                    }
                    catch (CodeGenerationException)
                    {
                        // Do not add the CodeGenerationException again. Will be written in finally block
                    }
                    catch (Exception exception)
                    {
                        Logger.LogError(exception, exception.Message);
                    }
                    finally
                    {
                        if (
                            Logger.Entries.Any(
                                e => e.Severity == LogEntrySeverity.Error || e.Severity == LogEntrySeverity.Fatal))
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                        }
                        else if (Logger.Entries.Any(e => e.Severity == LogEntrySeverity.Warning))
                        {
                            Console.ForegroundColor = ConsoleColor.Yellow;
                        }

                        Logger.WriteErrors(Console.Error,
                                           args.Any(a => "-Verbose".Equals(a, StringComparison.OrdinalIgnoreCase)));

                        Logger.WriteWarnings(Console.Out);

                        // Include LogEntrySeverity.Infos for verbose logging.
                        if (args.Any(a => "-Verbose".Equals(a, StringComparison.OrdinalIgnoreCase)))
                        {
                            Logger.WriteInfos(Console.Out);
                        }

                        if (settings != null)
                        {
                            Console.WriteLine(Resources.GenerationComplete,
                                              settings.CodeGenerator, settings.Input);
                        }

                        Console.ResetColor();
                    }
                }
            }
            catch (Exception exception)
            {
                Console.Error.WriteLine(Resources.ConsoleErrorMessage, exception.Message);
                Console.Error.WriteLine(Resources.ConsoleErrorStackTrace, exception.StackTrace);
            }
        }