using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using OI.Metrology.Console.Models;

namespace OI.Metrology.Console;

internal class Program
{

    public static void Main(string[] args)
    {
#pragma warning disable IL3050
        HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);
#pragma warning restore IL3050
        _ = builder.Configuration.AddEnvironmentVariables();
        _ = builder.Configuration.AddUserSecrets<Program>();
        _ = builder.Services.AddSingleton(args.ToList());
        AppSettings appSettings = Models.Binder.AppSettings.Get(builder.Configuration);
        _ = builder.Services.AddSingleton(appSettings);
        _ = builder.Services.AddHostedService<Worker>();
        using IHost host = builder.Build();
        ILogger<Program> logger = host.Services.GetRequiredService<ILogger<Program>>();
        logger.LogCritical("{appSettings.Company}", appSettings.Company);
        host.Run();
    }

}