tools/code/extractor/App.cs (76 lines of code) (raw):

using common; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.FeatureManagement; using System; using System.Diagnostics; using System.Reflection; namespace extractor; internal static class AppModule { public static void ConfigureRunApplication(IHostApplicationBuilder builder) { NamedValueModule.ConfigureExtractNamedValues(builder); TagModule.ConfigureExtractTags(builder); GatewayModule.ConfigureExtractGateways(builder); VersionSetModule.ConfigureExtractVersionSets(builder); BackendModule.ConfigureExtractBackends(builder); LoggerModule.ConfigureExtractLoggers(builder); DiagnosticModule.ConfigureExtractDiagnostics(builder); PolicyFragmentModule.ConfigureExtractPolicyFragments(builder); ServicePolicyModule.ConfigureExtractServicePolicies(builder); ProductModule.ConfigureExtractProducts(builder); GroupModule.ConfigureExtractGroups(builder); SubscriptionModule.ConfigureExtractSubscriptions(builder); ApiModule.ConfigureExtractApis(builder); WorkspaceModule.ConfigureExtractWorkspaces(builder); builder.Services.AddFeatureManagement(); builder.Services.TryAddSingleton(GetRunApplication); } private static RunApplication GetRunApplication(IServiceProvider provider) { var extractNamedValues = provider.GetRequiredService<ExtractNamedValues>(); var extractTags = provider.GetRequiredService<ExtractTags>(); var extractGateways = provider.GetRequiredService<ExtractGateways>(); var extractVersionSets = provider.GetRequiredService<ExtractVersionSets>(); var extractBackends = provider.GetRequiredService<ExtractBackends>(); var extractLoggers = provider.GetRequiredService<ExtractLoggers>(); var extractDiagnostics = provider.GetRequiredService<ExtractDiagnostics>(); var extractPolicyFragments = provider.GetRequiredService<ExtractPolicyFragments>(); var extractServicePolicies = provider.GetRequiredService<ExtractServicePolicies>(); var extractProducts = provider.GetRequiredService<ExtractProducts>(); var extractGroups = provider.GetRequiredService<ExtractGroups>(); var extractSubscriptions = provider.GetRequiredService<ExtractSubscriptions>(); var extractApis = provider.GetRequiredService<ExtractApis>(); var extractWorkspaces = provider.GetRequiredService<ExtractWorkspaces>(); var featureManager = provider.GetRequiredService<IFeatureManager>(); var activitySource = provider.GetRequiredService<ActivitySource>(); var logger = provider.GetRequiredService<ILogger>(); var releaseVersion = Assembly.GetEntryAssembly()?.GetCustomAttribute<AssemblyFileVersionAttribute>()?.Version ?? "0.0.0"; return async cancellationToken => { using var activity = activitySource.StartActivity(nameof(RunApplication)); logger.LogInformation("Running extractor {ReleaseVersion}...", releaseVersion); await extractNamedValues(cancellationToken); await extractTags(cancellationToken); await extractGateways(cancellationToken); await extractVersionSets(cancellationToken); await extractBackends(cancellationToken); await extractLoggers(cancellationToken); await extractDiagnostics(cancellationToken); await extractPolicyFragments(cancellationToken); await extractServicePolicies(cancellationToken); await extractProducts(cancellationToken); await extractGroups(cancellationToken); await extractSubscriptions(cancellationToken); await extractApis(cancellationToken); if (await featureManager.IsEnabledAsync("Workspaces")) { await extractWorkspaces(cancellationToken); } logger.LogInformation("Extractor completed."); }; } }