using System;
using System.Threading.Tasks;

using Autofac;

using Microsoft.Extensions.Configuration;

using PluralKit.Core;

namespace PluralKit.ScheduledTasks
{
    class Startup
    {
        static async Task Main(string[] args)
        {
            // Load configuration and run global init stuff
            var config = InitUtils.BuildConfiguration(args).Build();
            InitUtils.InitStatic();

            var services = BuildContainer(config);
            services.Resolve<TaskHandler>().Run();

            await Task.Delay(-1);
        }

        private static IContainer BuildContainer(IConfiguration config)
        {
            var builder = new ContainerBuilder();

            builder.RegisterInstance(config);
            builder.RegisterModule(new ConfigModule<CoreConfig>());
            builder.RegisterModule(new LoggingModule("ScheduledTasks"));
            builder.RegisterModule(new MetricsModule());
            builder.RegisterModule<DataStoreModule>();
            builder.RegisterType<TaskHandler>().AsSelf().SingleInstance();

            return builder.Build();
        }
    }
}