in src/ApiPort/ApiPort/DependencyBuilder.cs [25:148]
public static IContainer Build(ICommandLineOptions options, ProductInformation productInformation)
{
var builder = new ContainerBuilder();
builder.RegisterType<TargetMapper>()
.As<ITargetMapper>()
.OnActivated(c => c.Instance.LoadFromConfig(options.TargetMapFile))
.SingleInstance();
builder.RegisterInstance<ProductInformation>(productInformation);
builder.RegisterInstance<ICommandLineOptions>(options);
builder.RegisterType<ConsoleCredentialProvider>()
.As<ICredentialProvider>()
.SingleInstance();
builder.Register(context =>
{
var directory = Path.GetDirectoryName(typeof(Program).GetTypeInfo().Assembly.Location);
return new ProxyProvider(
directory,
ConfigurationFile,
context.Resolve<ICredentialProvider>());
})
.As<IProxyProvider>()
.SingleInstance();
if (options.Command == AppCommand.DumpAnalysis)
{
builder.RegisterType<FileOutputApiPortService>()
.As<IApiPortService>()
.SingleInstance();
}
else
{
builder.Register(context =>
new ApiPortService(
context.Resolve<ICommandLineOptions>().ServiceEndpoint,
context.Resolve<ProductInformation>(),
context.Resolve<IProxyProvider>()))
.As<IApiPortService>()
.SingleInstance();
}
builder.RegisterType<FileIgnoreAssemblyInfoList>()
.As<IEnumerable<IgnoreAssemblyInfo>>()
.SingleInstance();
builder.RegisterType<DependencyOrderer>()
.As<IDependencyOrderer>()
.SingleInstance();
builder.RegisterType<ReflectionMetadataDependencyFinder>()
.As<IDependencyFinder>()
.SingleInstance();
builder.RegisterType<DotNetFrameworkFilter>()
.As<IDependencyFilter>()
.SingleInstance();
builder.RegisterType<ReportGenerator>()
.As<IReportGenerator>()
.SingleInstance();
builder.RegisterType<ApiPortClient>()
.SingleInstance();
builder.RegisterType<ApiPortService>()
.SingleInstance();
builder.RegisterType<WindowsFileSystem>()
.As<IFileSystem>()
.SingleInstance();
builder.RegisterType<ReportFileWriter>()
.As<IFileWriter>()
.SingleInstance();
builder.RegisterType<RequestAnalyzer>()
.As<IRequestAnalyzer>()
.SingleInstance();
builder.RegisterType<AnalysisEngine>()
.As<IAnalysisEngine>()
.SingleInstance();
builder.RegisterType<ConsoleApiPort>()
.SingleInstance();
builder.RegisterType<SystemObjectFinder>()
.SingleInstance();
builder.RegisterAdapter<ICommandLineOptions, IApiPortOptions>((ctx, opts) =>
{
if (opts.OutputFormats?.Any() == true)
{
return opts;
}
return new ReadWriteApiPortOptions(opts);
})
.SingleInstance();
builder.RegisterType<DocIdSearchRepl>();
builder.RegisterType<ApiPortServiceSearcher>()
.As<ISearcher<string>>()
.SingleInstance();
if (Console.IsOutputRedirected)
{
builder.RegisterInstance<IProgressReporter>(new TextWriterProgressReporter(Console.Out));
}
else
{
builder.RegisterType<ConsoleProgressReporter>()
.As<IProgressReporter>()
.SingleInstance();
}
RegisterOfflineModule(builder);
return builder.Build();
}