using NLog; using System; using System.Runtime.CompilerServices; using ChaosBot.Discord; using System.Threading.Tasks; using Microsoft.Extensions.Configuration; [assembly: InternalsVisibleTo("ChaosBot.UnitTests")] namespace ChaosBot { internal class Program { public static ILogger Logger; public static IConfiguration AppSettingsHandler; private static string _appsettingsPath; private static void Main(string[] args) { _appsettingsPath = args.Length > 0 ? args[0] : "./appsettings.json"; new Program().MainFunction().GetAwaiter().GetResult(); } private async Task MainFunction() { try { /* * Load configuration from AppSettings.Json and save as Cfg */ IConfiguration configurationHandler = LoadConfiguration(_appsettingsPath); /* * Initialize the _logger for logging purposes */ Logger = Logging.GenLog(configurationHandler); /* * Set AppSettingsHandler on ConfigurationRepository */ AppSettingsHandler = configurationHandler; /* * Initialize the Discord Client and Login */ Logger.Info($"Starting Up {AppSettingsHandler.GetValue("Bot:Name")} v{AppSettingsHandler.GetValue("Bot:Version")}"); var discordBot = LoadDiscord(); LoadWebServer(); await discordBot; } catch (Exception ex) { Logger.Error(ex, $"Program.MainFunction: Exception [{ex}] thrown, <[{ex.Message}]>."); } } public static IConfiguration LoadConfiguration(string appsettingsPath) { return new ConfigurationBuilder() .SetBasePath(System.IO.Directory.GetCurrentDirectory()) .AddJsonFile(appsettingsPath, optional: false, reloadOnChange: true).Build(); } public static void LoadWebServer() { WebServer.WebServer.Start(new string[]{}); } public static Task LoadDiscord() { return DiscordConnect.StartUp(); } } }