using CustomHostingDemo.Logging; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Ninject; using System; using System.CommandLine; using System.CommandLine.Builder; using System.CommandLine.Parsing; using System.IO; using System.Reflection; namespace CustomHostingDemo { class Program { static int Main(string[] args) { var kernel = new StandardKernel( new LoggingModule(), new CommandHandlerModule() ); var config = new ConfigurationBuilder() .SetBasePath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: false) .AddJsonFile(Path.Combine(Environment.GetEnvironmentVariable("USERPROFILE"), "custom-demo.json"), optional: true, reloadOnChange: false) .Build(); kernel.Bind().ToConstant(config).InSingletonScope(); var logger = kernel.Get>(); logger.LogInformation($"Informational Message - Hello {config["Hello"]}"); logger.LogWarning("Ooopsie!"); var rootCommand = new RootCommand() { new HelloCommand().Bind(kernel), }; var parser = new CommandLineBuilder(rootCommand) .UseDefaults() .Build(); return parser.InvokeAsync(args).Result; } } }