Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }