-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Program.cs
61 lines (55 loc) · 1.37 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using System;
using System.CommandLine.Builder;
using System.CommandLine.Hosting;
using System.CommandLine.Parsing;
using System.Reflection;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace Inkify
{
internal static class Program
{
private static async Task<int> Main(string[] args)
{
SetWindowTitle();
return await HandleCommandLine(args);
}
private static async Task<int> HandleCommandLine(string[] args)
{
int result = await InkifyCommand.BuildCommandLine()
.UseDefaults()
.UseHost(GetHostBuilder, ConfigureHost)
.Build()
.InvokeAsync(args);
return result;
}
private static void ConfigureHost(IHostBuilder host)
{
host.ConfigureServices(services =>
{
// register services
services.AddSingleton<Inkify>();
services.AddSingleton<ImageTransformer>();
});
}
private static IHostBuilder GetHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
// add our custom minimum level filter.
logging.AddFilter(MinimumLogLevelFilter.Filter);
});
}
private static void SetWindowTitle()
{
var asy = Assembly.GetExecutingAssembly();
if (string.IsNullOrWhiteSpace(asy.FullName) == false)
{
Console.Title = asy.FullName;
}
}
}
}