/// <summary> /// Generates client using provided settings. /// </summary> public static void Generate() { if (Settings.Instance == null) { throw new ArgumentNullException("settings"); } Logger.Instance.Log(Category.Info, Resources.AutoRestCore, Version); CodeModel codeModel = null; var modeler = ExtensionsLoader.GetModeler(); try { using (NewContext) { bool validationErrorFound = false; Logger.Instance.AddListener(new SignalingLogListener(Settings.Instance.ValidationLevel, _ => validationErrorFound = true)); // generate model from swagger codeModel = modeler.Build(); if (validationErrorFound) { Logger.Instance.Log(Category.Error, "Errors found during Swagger validation"); } } } catch (Exception exception) { throw ErrorManager.CreateError(Resources.ErrorGeneratingClientModel, exception); } if (Settings.Instance.JsonValidationMessages) { return; // no code gen in Json validation mode } var plugin = ExtensionsLoader.GetPlugin(); Console.ResetColor(); try { var genericSerializer = new ModelSerializer <CodeModel>(); var modelAsJson = genericSerializer.ToJson(codeModel); // ensure once we're doing language-specific work, that we're working // in context provided by the language-specific transformer. using (plugin.Activate()) { // load model into language-specific code model codeModel = plugin.Serializer.Load(modelAsJson); // apply language-specific tranformation (more than just language-specific types) // used to be called "NormalizeClientModel" . codeModel = plugin.Transformer.TransformCodeModel(codeModel); // Generate code from CodeModel. plugin.CodeGenerator.Generate(codeModel).GetAwaiter().GetResult(); } } catch (Exception exception) { throw ErrorManager.CreateError(Resources.ErrorSavingGeneratedCode, exception); } }
/// <summary> /// Generates client using provided settings. /// </summary> public static void Generate() { if (Settings.Instance == null) { throw new ArgumentNullException("settings"); } Logger.Entries.Clear(); Logger.LogInfo(Resources.AutoRestCore, Version); CodeModel codeModel = null; var modeler = ExtensionsLoader.GetModeler(); try { IEnumerable <ValidationMessage> messages = new List <ValidationMessage>(); // generate model from swagger codeModel = modeler.Build(out messages); // After swagger Parser codeModel = RunExtensions(Trigger.AfterModelCreation, codeModel); // After swagger Parser codeModel = RunExtensions(Trigger.BeforeLoadingLanguageSpecificModel, codeModel); foreach (var message in messages) { Logger.Entries.Add(new LogEntry(message.Severity, message.ToString())); } if (messages.Any(entry => entry.Severity >= Settings.Instance.ValidationLevel)) { throw ErrorManager.CreateError(null, Resources.ErrorGeneratingClientModel, "Errors found during Swagger validation"); } } catch (Exception exception) { throw ErrorManager.CreateError(exception, Resources.ErrorGeneratingClientModel, exception.Message); } var plugin = ExtensionsLoader.GetPlugin(); Logger.WriteOutput(plugin.CodeGenerator.UsageInstructions); Settings.Instance.Validate(); try { var genericSerializer = new ModelSerializer <CodeModel>(); var modelAsJson = genericSerializer.ToJson(codeModel); // ensure once we're doing language-specific work, that we're working // in context provided by the language-specific transformer. using (plugin.Activate()) { // load model into language-specific code model codeModel = plugin.Serializer.Load(modelAsJson); // we've loaded the model, run the extensions for after it's loaded codeModel = RunExtensions(Trigger.AfterLoadingLanguageSpecificModel, codeModel); // apply language-specific tranformation (more than just language-specific types) // used to be called "NormalizeClientModel" . codeModel = plugin.Transformer.TransformCodeModel(codeModel); // next set of extensions codeModel = RunExtensions(Trigger.AfterLanguageSpecificTransform, codeModel); // next set of extensions codeModel = RunExtensions(Trigger.BeforeGeneratingCode, codeModel); // Generate code from CodeModel. plugin.CodeGenerator.Generate(codeModel).GetAwaiter().GetResult(); } } catch (Exception exception) { throw ErrorManager.CreateError(exception, Resources.ErrorSavingGeneratedCode, exception.Message); } }