Exemplo n.º 1
0
        // ---------------- End of commands

        private Task Log(string msg, LogSeverity severity = LogSeverity.Info)
        {
            string source = "";

            switch (severity)
            {
            case LogSeverity.Critical:
                source = "Critical";
                break;

            case LogSeverity.Error:
                source = "Error";
                break;

            case LogSeverity.Warning:
                source = "Warning";
                break;

            case LogSeverity.Info:
                source = "Info";
                break;

            case LogSeverity.Verbose:
                source = "Verbose";
                break;

            case LogSeverity.Debug:
                source = "Debug";
                break;

            default:
                break;
            }
            LogMessage message = new LogMessage(severity, source, msg);

            Console.WriteLine(message.ToString());
            //if (AutoLog) InfoExportClass.DumpLogOutput(message.ToString());
            //BotInfo.LogList.Add(message.ToString());
            LogCatalog.AddLog(message.ToString());
            return(Task.CompletedTask);
        }
Exemplo n.º 2
0
        // end of commands

        Task Log(string msg, LogSeverity severity = LogSeverity.Info)
        {
            string source = "";

            switch (severity)
            {
            case LogSeverity.Critical:
                source = "Critical";
                break;

            case LogSeverity.Error:
                source = "Error";
                break;

            case LogSeverity.Warning:
                source = "Warning";
                break;

            case LogSeverity.Info:
                source = "Info";
                break;

            case LogSeverity.Verbose:
                source = "Verbose";
                break;

            case LogSeverity.Debug:
                source = "Debug";
                break;

            default:
                break;
            }
            LogMessage message = new LogMessage(severity, source, msg);

            Console.WriteLine(message.ToString());
            LogCatalog.AddLog(message.ToString());
            return(Task.CompletedTask);
        }
Exemplo n.º 3
0
        private static async Task <int> MainAsync(string[] args)
        {
            if (args.Any() &&
                args[0].Equals(CommandLineConstants.MigrateCliVerb, StringComparison.OrdinalIgnoreCase) &&
                !args.Any(a => a.TrimEnd().EndsWith("help", StringComparison.OrdinalIgnoreCase)))
            {
                return(Migrate() ? 0 : 1);
            }

            Agents.Net.CommunityAnalysis.Analyse(Array.Empty <Assembly>());
#if DEBUG
            Stopwatch stopwatch = Stopwatch.StartNew();
#endif
            try
            {
                bool             noSdkExploration = args.Any(a => a.Contains("--no-sdk-exploration", StringComparison.Ordinal));
                ILog             log     = CreateLog();
                ContainerBuilder builder = new ContainerBuilder();
                builder.RegisterInstance(log);
                builder.RegisterModule(new DiModule(noSdkExploration));

                using (IContainer container = builder.Build())
                {
                    try
                    {
                        ICommandLineParser commandLineParser = container.Resolve <ICommandLineParser>();
#if DEBUG
                        Console.WriteLine($@"Startup timer {stopwatch.Elapsed}");
                        Console.WriteLine($@"Arguments: {args.Aggregate(string.Empty, (s, s1) => s + "_" + s1)}");
#endif
                        int result = await commandLineParser.Parse(args).ConfigureAwait(false);

                        return(result);
                    }
                    catch (Exception e)
                    {
                        IExceptionHandler exceptionHandler = container.Resolve <IExceptionHandler>();
                        if (!exceptionHandler.HandleException(e))
                        {
                            throw;
                        }

                        return(-1);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($@"Unexpected exception during execution{Environment.NewLine}{e}");
                Trace.TraceError(e.ToString());
                return(-1);
            }

            ILog CreateLog()
            {
                string path   = LogHelper.GetLogCatalogLocation();
                ILog   result = LogCatalog.CreateNewLog(path, string.Join(" ", args));

                result.AddInitialLog(args);
                return(result);
            }

            bool Migrate()
            {
                ILog log = LogHelper.GetMigrationLog();

                try
                {
                    log.AddInitialLog(args);
                    //Not implemented feature: Old version has caches and settings in same location as current version.
                    //How to identify the version? Probably create a .version file.
                    return(MigrationChain.Start(m =>
                    {
                        Console.WriteLine(m);
                        log.LogInformation(m);
                    })
                           .AddPotentialLocation(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
                                                              "plcncli.Common"), new Version(19, 0))
                           .AddMigrationFile("settings.xml")
                           .AddMigrationFile("sdk-properties.xml")
                           .SetMigrationDestination(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
                                                                 (Assembly.GetEntryAssembly() ?? Assembly.GetExecutingAssembly()).GetName().Name))
                           .AddConversionStep <ConversionFrom190>()
                           .Execute());
                }
                finally
                {
                    (log as IDisposable)?.Dispose();
                }
            }
        }