public static void RunTests(string resultFolder) { if (resultFolder == null) { throw new ArgumentNullException("settings"); } var settings = Settings.Instance; settings.FileSystemInput = new MemoryFileSystem(); settings.FileSystemInput.CreateDirectory(Path.GetDirectoryName(settings.Input)); settings.FileSystemInput.WriteAllText(settings.Input, File.ReadAllText(settings.Input)); var expectedWithSeparator = "Expected" + Path.DirectorySeparatorChar; var specFileName = resultFolder.StartsWith(expectedWithSeparator, StringComparison.Ordinal) ? resultFolder.Substring(expectedWithSeparator.Length) : resultFolder; var name = ExtensionsLoader.GetPlugin().Settings.Name; settings.Namespace = string.IsNullOrEmpty(settings.Namespace) ? "Fixtures." + (name.Contains("Azure") ? "Azure." : "") + specFileName. Replace(".cs", "").Replace(".Cs", "").Replace(".java", ""). Replace(".js", "").Replace(".", ""). Replace(Path.DirectorySeparatorChar.ToString(), "").Replace("-", "") : settings.Namespace; settings.DisableSimplifier = true; AutoRestController.Generate(); var actualFiles = settings.FileSystemOutput.GetFiles("", "*.*", SearchOption.AllDirectories).OrderBy(f => f).ToArray(); var expectedFiles = Directory.Exists(resultFolder) ? Directory.GetFiles(resultFolder, "*.*", SearchOption.AllDirectories).OrderBy(f => f).ToArray() : new string[0]; 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.FileSystemOutput.ReadAllText(actualFile)); } }
private static int Main(string[] args) { if (args != null && args.Length > 0 && args[0] == "--server") { return(new AutoRestAsAsService().Run().Result); } int exitCode = (int)ExitCode.Error; try { using (NewContext) { bool generationFailed = false; Settings settings = null; var jsonValidationLogListener = new JsonValidationLogListener(); try { settings = Settings.Create(args); // opt into client side validation by default if (!settings.CustomSettings.ContainsKey("ClientSideValidation")) { settings.CustomSettings.Add("ClientSideValidation", true); } // set up logging if (settings.JsonValidationMessages) { Logger.Instance.AddListener(jsonValidationLogListener); } else { Logger.Instance.AddListener(new ConsoleLogListener( settings.Debug ? Category.Debug : Category.Warning, settings.ValidationLevel, settings.Verbose)); } Logger.Instance.AddListener(new SignalingLogListener(Category.Error, _ => generationFailed = true)); Settings.AutoRestFolder = Path.GetDirectoryName(typeof(Program).GetAssembly().Location); // determine some reasonable default namespace if (settings.Namespace == null) { if (settings.Input != null) { settings.Namespace = Path.GetFileNameWithoutExtension(settings.Input); } else { settings.Namespace = "default"; } } // main pipeline AutoRestController.Generate(); if (!Settings.Instance.JsonValidationMessages && !Settings.Instance.DisableSimplifier && Settings.Instance.CodeGenerator.IndexOf("csharp", StringComparison.OrdinalIgnoreCase) > -1) { new Simplify.CSharpSimplifier().Run().ConfigureAwait(false).GetAwaiter().GetResult(); } if (!settings.JsonValidationMessages) { Settings.Instance.FileSystemOutput.CommitToDisk(Settings.Instance.OutputFileName == null ? Settings.Instance.OutputDirectory : Path.GetDirectoryName(Settings.Instance.OutputFileName)); } } catch (Exception exception) { Logger.Instance.Log(Category.Error, exception.Message); } finally { if (settings != null && settings.JsonValidationMessages) { Console.WriteLine(jsonValidationLogListener.GetValidationMessagesAsJson()); } if (settings != null) { if (generationFailed) { if (!"None".EqualsIgnoreCase(settings.CodeGenerator)) { Logger.Instance.Log(Category.Error, Resources.GenerationFailed); Logger.Instance.Log(Category.Error, "{0} {1}", typeof(Program).GetAssembly().ManifestModule.Name, string.Join(" ", args)); } } else { if (!"None".EqualsIgnoreCase(settings.CodeGenerator)) { Logger.Instance.Log(Category.Info, Resources.GenerationComplete, settings.CodeGenerator, settings.Input); } exitCode = (int)ExitCode.Success; } } } } } catch (Exception exception) { Console.Error.WriteLine(Resources.ConsoleErrorMessage, exception.Message); Console.Error.WriteLine(Resources.ConsoleErrorStackTrace, exception.StackTrace); } return(exitCode); }
private static int Main(string[] args) { int exitCode = (int)ExitCode.Error; try { using (NewContext) { bool generationFailed = false; Settings settings = null; var jsonValidationLogListener = new JsonValidationLogListener(); try { settings = Settings.Create(args); // set up logging if (settings.JsonValidationMessages) { Logger.Instance.AddListener(jsonValidationLogListener); } else { Logger.Instance.AddListener(new ConsoleLogListener( settings.Debug ? Category.Debug : Category.Warning, settings.ValidationLevel, settings.Verbose)); } Logger.Instance.AddListener(new SignalingLogListener(Category.Error, _ => generationFailed = true)); // internal preprocesor if (settings.Preprocessor) { Console.Write(InternalPreprocessor(settings.FileSystemInput.ReadAllText(settings.Input))); return(0); } Settings.AutoRestFolder = Path.GetDirectoryName(typeof(Program).GetAssembly().Location); // determine some reasonable default namespace if (settings.Namespace == null) { if (settings.Input != null) { settings.Namespace = Path.GetFileNameWithoutExtension(settings.Input); } else { settings.Namespace = "default"; } } // help requested? string defCodeGen = (args.Where(arg => arg.ToLowerInvariant().Contains("codegenerator")).IsNullOrEmpty()) ? "" : settings.CodeGenerator; if (settings.ShowHelp) { settings.CodeGenerator = defCodeGen; Console.WriteLine(HelpGenerator.Generate(IsShowMarkdownHelpIncluded(args) ? Resources.HelpMarkdownTemplate : Resources.HelpTextTemplate, settings)); return(0); } // comparison? if (!string.IsNullOrEmpty(settings.Previous)) { AutoRestController.Compare(); return(0); } // main pipeline AutoRestController.Generate(); if (!Settings.Instance.JsonValidationMessages && !Settings.Instance.DisableSimplifier && Settings.Instance.CodeGenerator.IndexOf("csharp", StringComparison.OrdinalIgnoreCase) > -1) { new CSharpSimplifier().Run().ConfigureAwait(false).GetAwaiter().GetResult(); } if (!settings.JsonValidationMessages) { Settings.Instance.FileSystemOutput.CommitToDisk(Settings.Instance.OutputFileName == null ? Settings.Instance.OutputDirectory : Path.GetDirectoryName(Settings.Instance.OutputFileName)); } } catch (Exception exception) { Logger.Instance.Log(Category.Error, exception.Message); } finally { if (settings != null && settings.JsonValidationMessages) { Console.WriteLine(jsonValidationLogListener.GetValidationMessagesAsJson()); } if (settings != null && !settings.ShowHelp) { if (generationFailed) { if (!"None".EqualsIgnoreCase(settings.CodeGenerator)) { Logger.Instance.Log(Category.Error, Resources.GenerationFailed); Logger.Instance.Log(Category.Error, "{0} {1}", typeof(Program).GetAssembly().ManifestModule.Name, string.Join(" ", args)); } } else { if (!"None".EqualsIgnoreCase(settings.CodeGenerator)) { Logger.Instance.Log(Category.Info, Resources.GenerationComplete, settings.CodeGenerator, settings.Input); } exitCode = (int)ExitCode.Success; } } } } } catch (Exception exception) { Console.Error.WriteLine(Resources.ConsoleErrorMessage, exception.Message); Console.Error.WriteLine(Resources.ConsoleErrorStackTrace, exception.StackTrace); } return(exitCode); }