Add DI and Initialisation

This commit is contained in:
flightlevel
2018-05-01 22:00:02 +10:00
parent 13426fe7ec
commit 683bd6e2d4
3 changed files with 243 additions and 20 deletions

View File

@@ -1,24 +1,60 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using CommandLine;
using CommandLine.Text;
using Jackett.Common.Models.Config;
using Jackett.Common.Utils;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Jackett.Server
{
public class Program
{
public static IConfiguration Configuration { get; set; }
public static void Main(string[] args)
{
BuildWebHost(args).Run();
var optionsResult = Parser.Default.ParseArguments<ConsoleOptions>(args);
optionsResult.WithNotParsed(errors =>
{
var text = HelpText.AutoBuild(optionsResult);
text.Copyright = " ";
text.Heading = "Jackett v" + EnvironmentUtil.JackettVersion + " options:";
Console.WriteLine(text);
Environment.ExitCode = 1;
return;
});
var runtimeDictionary = new Dictionary<string, string>();
optionsResult.WithParsed(options =>
{
RuntimeSettings r = options.ToRunTimeSettings();
runtimeDictionary = GetValues(r);
});
var builder = new ConfigurationBuilder();
builder.AddInMemoryCollection(runtimeDictionary);
Configuration = builder.Build();
BuildWebHost().Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
public static Dictionary<string, string> GetValues(object obj)
{
return obj
.GetType()
.GetProperties()
.ToDictionary(p => "RuntimeSettings:" + p.Name, p => p.GetValue(obj) == null ? null : p.GetValue(obj).ToString());
}
public static IWebHost BuildWebHost() =>
WebHost.CreateDefaultBuilder()
.UseConfiguration(Configuration)
.UseStartup<Startup>()
.Build();
}