Example #1
0
        static void Main(string[] args)
        {
            if (args.Length < 3)
            {
                throw new ArgumentException("Must provide a config file, aws profile and path");
            }
            var config    = args[0];
            var isConsole = args.Length == 4 && args[3].Equals("--console");

            var outputTemplate = "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] {SourceContext}: {Message:lj}{NewLine}{Exception}";

            if (args.Length == 4 && !args[3].Equals("--console"))
            {
                // Args[3] is version number if not --console
                outputTemplate = "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] (" + args[3] + ") {SourceContext}: {Message:lj}{NewLine}{Exception}";
            }

            Serilog.Formatting.Display.MessageTemplateTextFormatter tf =
                new Serilog.Formatting.Display.MessageTemplateTextFormatter(outputTemplate, CultureInfo.InvariantCulture);

            var portingAssistantSink = new PortingAssistantSink(tf);
            var logConfiguration     = new LoggerConfiguration().Enrich.FromLogContext()
                                       .MinimumLevel.Debug()
                                       .WriteTo.RollingFile(
                Path.Combine(args[2], "logs", "portingAssistant-assessment-{Date}.log"),
                outputTemplate: outputTemplate)
                                       .WriteTo.Sink(portingAssistantSink);

            if (isConsole)
            {
                logConfiguration = logConfiguration.WriteTo.Console();
            }

            Log.Logger = logConfiguration.CreateLogger();

            var portingAssistantPortingConfiguration = JsonSerializer.Deserialize <PortingAssistantPortingConfiguration>(File.ReadAllText(config));
            var configuration = new PortingAssistantConfiguration();

            configuration.DataStoreSettings.HttpsEndpoint  = portingAssistantPortingConfiguration.PortingAssistantConfiguration.DataStoreSettings.HttpsEndpoint;
            configuration.DataStoreSettings.S3Endpoint     = portingAssistantPortingConfiguration.PortingAssistantConfiguration.DataStoreSettings.S3Endpoint;
            configuration.DataStoreSettings.GitHubEndpoint = portingAssistantPortingConfiguration.PortingAssistantConfiguration.DataStoreSettings.GitHubEndpoint;

            var serviceCollection = new ServiceCollection();

            ConfigureServices(serviceCollection, configuration);

            try
            {
                var application = new Application(serviceCollection, portingAssistantSink);
                application.SetupConnection(isConsole);
                application.Start();
            }
            finally
            {
                Log.CloseAndFlush();
            }
        }
 public Application(IServiceCollection serviceCollection, PortingAssistantSink portingAssistantSink)
 {
     _services   = serviceCollection.BuildServiceProvider();
     _logger     = _services.GetRequiredService <ILogger <Application> >();
     _connection = BuildConnection();
     portingAssistantSink.registerOnData((response) =>
     {
         _connection.Send("onDataUpdate", response);
     });
 }