private static ExtractWorkspaces GetExtractWorkspaces()

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);
        }
    }