Repository navigation
Expand file tree
/
Copy pathinitial_setup_composition_root.ts
More file actions
56 lines (53 loc) · 3.33 KB
/
Copy pathinitial_setup_composition_root.ts
File metadata and controls
56 lines (53 loc) · 3.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import { createAuthenticatedUserClient } from './github_identity_client_factory';
import { createIssueLabelProvisioningClient } from './github_issue_client_factory';
import { createGraphqlTransportClient } from './github_project_client_factory';
import { createReleaseClient, createRepositoryVersionTagsClient } from './github_release_client_factory';
import { InitialSetupUseCase } from "../../application/usecases/actions/initial_setup_use_case";
import type { SetupOperationEffect } from '../../domain/setup';
import { IssueLabelProvisioningRepository } from "../../data/repository/issue/issue_label_provisioning_repository";
import { IssueTypeRepository } from "../../data/repository/issue/issue_type_repository";
import { AuthenticatedUserRepository } from "../../data/repository/organization/authenticated_user_repository";
import { RepositoryDefaultBranchRepository } from "../../data/repository/release/repository_default_branch_repository";
import { RepositoryTagRepository } from "../../data/repository/release/repository_tag_repository";
import { RepositoryVersionTagsQueryRepository } from "../../data/repository/release/repository_version_tags_query_repository";
import { composeInitialSetupUseCase } from "./initial_setup_use_case_composition";
import { SetupWorkspaceMutationAdapter } from "../setup_workspace_adapter";
import {
RepositorySecretsCommandRepository,
RepositoryVariablesCommandRepository,
SetupRemoteConfigurationQueryRepository,
} from '../../data/repository/repository_variables_repository';
import { createRepositoryVariablesClient } from './github_identity_client_factory';
import type { RepositoryCredentialBinding } from './shared_capability_port_binding';
import {
bindAuthenticatedUser,
bindInitialLabels,
bindIssueTypes,
bindRepositoryDefaultBranch,
bindRepositoryVersionTags,
bindRepositoryTag,
bindSetupRemoteConfiguration,
bindSetupSecrets,
bindSetupVariables,
bindSetupWorkspace,
} from './push_single_action_capability_port_binding';
export function createInitialSetupCompositionRoot(binding: RepositoryCredentialBinding,
progress?: (effect: SetupOperationEffect) => void): InitialSetupUseCase {
const labelProvisioning = new IssueLabelProvisioningRepository(
createIssueLabelProvisioningClient(),
);
const githubResourceClient = createRepositoryVariablesClient();
return composeInitialSetupUseCase(
bindAuthenticatedUser(new AuthenticatedUserRepository(createAuthenticatedUserClient()), binding),
bindInitialLabels(labelProvisioning, binding),
bindIssueTypes(new IssueTypeRepository(createGraphqlTransportClient()), binding),
bindRepositoryVersionTags(new RepositoryVersionTagsQueryRepository(createRepositoryVersionTagsClient()), binding),
bindRepositoryDefaultBranch(new RepositoryDefaultBranchRepository(createReleaseClient()), binding),
bindRepositoryTag(new RepositoryTagRepository(createReleaseClient()), binding),
bindSetupWorkspace(new SetupWorkspaceMutationAdapter(), binding),
bindSetupVariables(new RepositoryVariablesCommandRepository(githubResourceClient), binding),
bindSetupSecrets(new RepositorySecretsCommandRepository(githubResourceClient), binding),
bindSetupRemoteConfiguration(new SetupRemoteConfigurationQueryRepository(githubResourceClient), binding),
progress,
);
}