3
3
using GitVersion . Common ;
4
4
using GitVersion . Configuration ;
5
5
using GitVersion . Logging ;
6
+ using Microsoft . Extensions . DependencyInjection ;
6
7
using Console = System . Console ;
7
8
using Environment = GitVersion . Common . Environment ;
8
9
@@ -17,24 +18,19 @@ private static void Main(string[] args)
17
18
var exitCode = 1 ;
18
19
if ( arguments != null )
19
20
{
20
- var fileSystem = new FileSystem ( ) ;
21
- var environment = new Environment ( ) ;
21
+ var services = ConfigureServices ( arguments ) ;
22
22
23
- try
23
+ using ( var serviceProvider = services . BuildServiceProvider ( ) )
24
24
{
25
- var log = new Log { Verbosity = arguments . Verbosity } ;
26
-
27
- var configFileLocator = string . IsNullOrWhiteSpace ( arguments . ConfigFile )
28
- ? ( IConfigFileLocator ) new DefaultConfigFileLocator ( fileSystem , log )
29
- : new NamedConfigFileLocator ( arguments . ConfigFile , fileSystem , log ) ;
30
-
31
- var app = new GitVersionApplication ( fileSystem , environment , log , configFileLocator ) ;
32
-
33
- exitCode = app . Run ( arguments ) ;
34
- }
35
- catch ( Exception exception )
36
- {
37
- Console . Error . WriteLine ( exception . Message ) ;
25
+ try
26
+ {
27
+ var app = serviceProvider . GetService < IGitVersionRunner > ( ) ;
28
+ exitCode = app . Run ( arguments ) ;
29
+ }
30
+ catch ( Exception exception )
31
+ {
32
+ Console . Error . WriteLine ( exception . Message ) ;
33
+ }
38
34
}
39
35
}
40
36
@@ -46,6 +42,33 @@ private static void Main(string[] args)
46
42
System . Environment . Exit ( exitCode ) ;
47
43
}
48
44
45
+ private static IServiceCollection ConfigureServices ( Arguments arguments )
46
+ {
47
+ var services = new ServiceCollection ( ) ;
48
+
49
+ services . AddSingleton < IFileSystem , FileSystem > ( ) ;
50
+ services . AddSingleton < IEnvironment , Environment > ( ) ;
51
+ services . AddSingleton < IHelpWriter , HelpWriter > ( ) ;
52
+ services . AddSingleton < IVersionWriter , VersionWriter > ( ) ;
53
+ services . AddSingleton < ILog > ( new Log { Verbosity = arguments . Verbosity } ) ;
54
+ services . AddSingleton ( sp => ConfigFileLocator ( sp , arguments ) ) ;
55
+ services . AddSingleton < IGitVersionRunner , GitVersionRunner > ( ) ;
56
+
57
+ return services ;
58
+ }
59
+
60
+ private static IConfigFileLocator ConfigFileLocator ( IServiceProvider sp , Arguments arguments )
61
+ {
62
+ var fileSystem = sp . GetService < IFileSystem > ( ) ;
63
+ var log = sp . GetService < ILog > ( ) ;
64
+
65
+ var configFileLocator = string . IsNullOrWhiteSpace ( arguments . ConfigFile )
66
+ ? ( IConfigFileLocator ) new DefaultConfigFileLocator ( fileSystem , log )
67
+ : new NamedConfigFileLocator ( arguments . ConfigFile , fileSystem , log ) ;
68
+
69
+ return configFileLocator ;
70
+ }
71
+
49
72
private static Arguments ParseArguments ( string [ ] args )
50
73
{
51
74
var argumentParser = new ArgumentParser ( ) ;
0 commit comments