chaosbot/ChaosBot/Program.cs

83 lines
2.4 KiB
C#

using NLog;
using System;
using System.Reflection;
using System.Runtime.CompilerServices;
using ChaosBot.Discord;
using System.Threading.Tasks;
using ChaosBot.ConfigHelpers;
using Microsoft.Extensions.Configuration;
[assembly: InternalsVisibleTo("ChaosBot.UnitTests")]
namespace ChaosBot
{
internal static class Program
{
private static ILogger _logger;
public static IConfiguration AppSettingsHandler;
public const string AppSettingsPath = "./appsettings.json";
private static void Main(string[] args)
{
try
{
/*
* Load configuration from AppSettings.Json and save as Cfg
*/
AppSettingsHandler = LoadConfiguration(AppSettingsPath);
/*
* Initialize the _logger for logging purposes
*/
_logger = Logging.GenLog(AppSettingsHandler);
_logger.Trace("Logger initialized");
}
catch (Exception ex)
{
LoggingFacade.Exception(ex);
Environment.Exit(1);
}
/*
* Initialize the Discord Client and Login
*/
Configuration config = new Configuration();
_logger.Info($"Starting Up {config.GetByKey<string>("Bot:Name").GetValue()} v{config.GetByKey<string>("Bot:Version").GetValue()}");
try
{
Task discordBot = LoadDiscord();
LoadWebServer(args);
discordBot.GetAwaiter().GetResult();
}
catch (Exception ex)
{
LoggingFacade.Exception(ex);
Environment.Exit(1);
}
}
public static ILogger GetLogger()
{
return _logger;
}
private static IConfiguration LoadConfiguration(string appSettingsPath)
{
return new ConfigurationBuilder()
.SetBasePath(System.IO.Directory.GetCurrentDirectory())
.AddJsonFile(appSettingsPath, optional: false, reloadOnChange: true).Build();
}
private static void LoadWebServer(string[] args)
{
WebServer.WebServer.Start(args);
}
private static Task LoadDiscord()
{
return DiscordConnect.StartUp();
}
}
}