in tools/code/extractor/Workspace.cs [41:85]
private static ExtractWorkspaces GetExtractWorkspaces(IServiceProvider provider)
{
var list = provider.GetRequiredService<ListWorkspaces>();
var extractWorkspaceNamedValues = provider.GetRequiredService<ExtractWorkspaceNamedValues>();
var extractWorkspaceBackends = provider.GetRequiredService<ExtractWorkspaceBackends>();
var extractWorkspaceTags = provider.GetRequiredService<ExtractWorkspaceTags>();
var extractWorkspaceVersionSets = provider.GetRequiredService<ExtractWorkspaceVersionSets>();
var extractWorkspaceLoggers = provider.GetRequiredService<ExtractWorkspaceLoggers>();
var extractWorkspaceDiagnostics = provider.GetRequiredService<ExtractWorkspaceDiagnostics>();
var extractWorkspacePolicyFragments = provider.GetRequiredService<ExtractWorkspacePolicyFragments>();
var extractWorkspacePolicies = provider.GetRequiredService<ExtractWorkspacePolicies>();
var extractWorkspaceProducts = provider.GetRequiredService<ExtractWorkspaceProducts>();
var extractWorkspaceGroups = provider.GetRequiredService<ExtractWorkspaceGroups>();
var extractWorkspaceApis = provider.GetRequiredService<ExtractWorkspaceApis>();
var extractWorkspaceSubscriptions = provider.GetRequiredService<ExtractWorkspaceSubscriptions>();
var activitySource = provider.GetRequiredService<ActivitySource>();
var logger = provider.GetRequiredService<ILogger>();
return async cancellationToken =>
{
using var _ = activitySource.StartActivity(nameof(ExtractWorkspaces));
logger.LogInformation("Extracting workspaces...");
await list(cancellationToken)
.IterParallel(async workspace => await extractWorkspace(workspace.Name, workspace.Dto, cancellationToken),
cancellationToken);
};
async ValueTask extractWorkspace(WorkspaceName name, WorkspaceDto dto, CancellationToken cancellationToken)
{
await extractWorkspaceNamedValues(name, cancellationToken);
await extractWorkspaceBackends(name, cancellationToken);
await extractWorkspaceTags(name, cancellationToken);
await extractWorkspaceVersionSets(name, cancellationToken);
await extractWorkspaceLoggers(name, cancellationToken);
await extractWorkspaceDiagnostics(name, cancellationToken);
await extractWorkspacePolicyFragments(name, cancellationToken);
await extractWorkspacePolicies(name, cancellationToken);
await extractWorkspaceProducts(name, cancellationToken);
await extractWorkspaceGroups(name, cancellationToken);
await extractWorkspaceApis(name, cancellationToken);
await extractWorkspaceSubscriptions(name, cancellationToken);
}
}