Skip to content

Commit e8462ce

Browse files
committed
Register types in each module
1 parent 17bfb2e commit e8462ce

File tree

7 files changed

+81
-42
lines changed

7 files changed

+81
-42
lines changed

src/GitVersionCore/CoreModule.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using Microsoft.Extensions.DependencyInjection;
2+
using GitVersion.Common;
3+
using GitVersion.Logging;
4+
5+
namespace GitVersion
6+
{
7+
public class CoreModule : IModule
8+
{
9+
public void RegisterTypes(IServiceCollection services)
10+
{
11+
services.AddSingleton<IFileSystem, FileSystem>();
12+
services.AddSingleton<IEnvironment, Environment>();
13+
services.AddSingleton<ILog, Log>();
14+
}
15+
}
16+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
namespace GitVersion.Extensions
2+
{
3+
using Microsoft.Extensions.DependencyInjection;
4+
5+
public static class ServiceCollectionExtensions
6+
{
7+
public static void AddModule(this IServiceCollection serviceCollection, IModule module)
8+
{
9+
module.RegisterTypes(serviceCollection);
10+
}
11+
}
12+
}

src/GitVersionCore/GitVersionCore.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<ItemGroup>
1818
<PackageReference Include="LibGit2Sharp" Version="$(PackageVersion_LibGit2Sharp)" />
1919
<PackageReference Include="JetBrains.Annotations" Version="$(PackageVersion_JetBrainsAnnotations)" PrivateAssets="All"></PackageReference>
20+
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.0.0" />
2021
<PackageReference Include="YamlDotNet" Version="$(PackageVersion_YamlDotNet)" />
2122
</ItemGroup>
2223

src/GitVersionCore/IModule.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using Microsoft.Extensions.DependencyInjection;
2+
3+
namespace GitVersion
4+
{
5+
public interface IModule
6+
{
7+
void RegisterTypes(IServiceCollection services);
8+
}
9+
}

src/GitVersionExe/GitVersionApp.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Threading.Tasks;
44
using Microsoft.Extensions.Hosting;
55
using Microsoft.Extensions.Options;
6+
using GitVersion.Logging;
67

78
namespace GitVersion
89
{
@@ -12,11 +13,13 @@ internal class GitVersionApp : IHostedService
1213
private readonly IGitVersionRunner gitVersionRunner;
1314
private readonly Arguments arguments;
1415

15-
public GitVersionApp(IHostApplicationLifetime applicationLifetime, IGitVersionRunner gitVersionRunner, IOptions<Arguments> options)
16+
public GitVersionApp(IHostApplicationLifetime applicationLifetime, IGitVersionRunner gitVersionRunner, ILog log, IOptions<Arguments> options)
1617
{
1718
this.arguments = options.Value;
1819
this.applicationLifetime = applicationLifetime;
1920
this.gitVersionRunner = gitVersionRunner;
21+
22+
log.Verbosity = arguments.Verbosity;
2023
}
2124
public Task StartAsync(CancellationToken cancellationToken)
2225
{

src/GitVersionExe/Module.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using System;
2+
using GitVersion.Common;
3+
using GitVersion.Configuration;
4+
using GitVersion.Logging;
5+
using Microsoft.Extensions.DependencyInjection;
6+
using Microsoft.Extensions.Options;
7+
8+
namespace GitVersion
9+
{
10+
public class Module : IModule
11+
{
12+
public void RegisterTypes(IServiceCollection services)
13+
{
14+
services.AddSingleton<IArgumentParser, ArgumentParser>();
15+
services.AddSingleton<IHelpWriter, HelpWriter>();
16+
services.AddSingleton<IVersionWriter, VersionWriter>();
17+
services.AddSingleton<IGitVersionRunner, GitVersionRunner>();
18+
19+
services.AddSingleton(GetConfigFileLocator);
20+
}
21+
22+
private static IConfigFileLocator GetConfigFileLocator(IServiceProvider sp)
23+
{
24+
var fileSystem = sp.GetService<IFileSystem>();
25+
var log = sp.GetService<ILog>();
26+
var arguments = sp.GetService<IOptions<Arguments>>();
27+
28+
var configFileLocator = string.IsNullOrWhiteSpace(arguments.Value.ConfigFile)
29+
? (IConfigFileLocator) new DefaultConfigFileLocator(fileSystem, log)
30+
: new NamedConfigFileLocator(arguments.Value.ConfigFile, fileSystem, log);
31+
32+
return configFileLocator;
33+
}
34+
}
35+
}

src/GitVersionExe/Program.cs

Lines changed: 4 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
1-
using System;
21
using System.Threading.Tasks;
3-
using GitVersion.Common;
4-
using GitVersion.Configuration;
5-
using GitVersion.Logging;
2+
using GitVersion.Extensions;
63
using Microsoft.Extensions.Configuration;
74
using Microsoft.Extensions.DependencyInjection;
85
using Microsoft.Extensions.Hosting;
96
using Microsoft.Extensions.Options;
10-
using Environment = GitVersion.Common.Environment;
117

128
namespace GitVersion
139
{
@@ -26,46 +22,13 @@ private static IHostBuilder CreateHostBuilder(string[] args) =>
2622
})
2723
.ConfigureServices((hostContext, services) =>
2824
{
29-
services.AddSingleton<IArgumentParser, ArgumentParser>();
30-
services.AddSingleton<IFileSystem, FileSystem>();
31-
services.AddSingleton<IEnvironment, Environment>();
32-
services.AddSingleton<IHelpWriter, HelpWriter>();
33-
services.AddSingleton<IVersionWriter, VersionWriter>();
34-
services.AddSingleton<IGitVersionRunner, GitVersionRunner>();
25+
services.AddModule(new CoreModule());
26+
services.AddModule(new Module());
3527

36-
services.AddSingleton(GetLog);
37-
services.AddSingleton(GetConfigFileLocator);
38-
services.AddSingleton(sp => GetArguments(sp, args));
28+
services.AddSingleton(sp => Options.Create(sp.GetService<IArgumentParser>().ParseArguments(args)));
3929

4030
services.AddHostedService<GitVersionApp>();
4131
})
4232
.UseConsoleLifetime();
43-
44-
private static ILog GetLog(IServiceProvider sp)
45-
{
46-
var arguments = sp.GetService<IOptions<Arguments>>();
47-
return new Log { Verbosity = arguments.Value.Verbosity };
48-
}
49-
50-
private static IOptions<Arguments> GetArguments(IServiceProvider sp, string[] args)
51-
{
52-
var argumentParser = sp.GetService<IArgumentParser>();
53-
var arguments = argumentParser.ParseArguments(args);
54-
55-
return Options.Create(arguments);
56-
}
57-
58-
private static IConfigFileLocator GetConfigFileLocator(IServiceProvider sp)
59-
{
60-
var fileSystem = sp.GetService<IFileSystem>();
61-
var log = sp.GetService<ILog>();
62-
var arguments = sp.GetService<IOptions<Arguments>>();
63-
64-
var configFileLocator = string.IsNullOrWhiteSpace(arguments.Value.ConfigFile)
65-
? (IConfigFileLocator) new DefaultConfigFileLocator(fileSystem, log)
66-
: new NamedConfigFileLocator(arguments.Value.ConfigFile, fileSystem, log);
67-
68-
return configFileLocator;
69-
}
7033
}
7134
}

0 commit comments

Comments
 (0)