Repository navigation
Expand file tree
/
Copy pathsetup_credentials_composition_root.ts
More file actions
42 lines (40 loc) · 2.73 KB
/
Copy pathsetup_credentials_composition_root.ts
File metadata and controls
42 lines (40 loc) · 2.73 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
import { SetupCredentialsUseCase } from '../../application/usecases/setup/setup_credentials_use_case';
import type { SetupCredentialPromptPort, SetupRemoteConfigurationReadPort } from '../../application/ports/setup_wizard_ports';
import { SetupCredentialValidationAdapter } from '../setup_credential_validation_adapter';
import {
RepositorySecretNamesQueryRepository,
SetupRemoteConfigurationQueryRepository,
} from '../../data/repository/repository_variables_repository';
import { createRepositoryVariablesClient } from './github_identity_client_factory';
import { SetupRemoteCredentialHealthBootstrapAdapter } from '../setup_remote_credential_health_adapter';
import { OctokitCredentialHealthClientAdapter, OctokitTrustedCredentialHealthClientAdapter } from '../github/octokit_credential_health_adapter';
import { SetupTrustedCredentialHealthAdapter } from '../setup_trusted_credential_health_adapter';
import type { SetupTokenPermissionPresenterPort } from '../../application/ports/setup_token_permission_ports';
import { createSetupTokenPermissionsUseCase } from './setup_token_permissions_composition_root';
import { VerifyGuidedWorkflowPatIdentityUseCase } from '../../application/usecases/setup/verify_guided_workflow_pat_identity_use_case';
import { SetupGithubIdentityQueryAdapter } from '../setup_github_identity_query_adapter';
export function createSetupCredentialsUseCase(
prompt: SetupCredentialPromptPort,
permissionPresenter?: SetupTokenPermissionPresenterPort,
options: { allowPreApplyHealthWorkflow?: boolean; onTemporaryWorkflowMutationAttempt?: () => void; configurationSource?: 'organization' | 'customize' } = {},
): SetupCredentialsUseCase {
const secretNames = new RepositorySecretNamesQueryRepository(createRepositoryVariablesClient());
return new SetupCredentialsUseCase(
prompt,
new SetupCredentialValidationAdapter(),
secretNames,
options.allowPreApplyHealthWorkflow === false || options.configurationSource === 'organization'
? undefined
: new SetupRemoteCredentialHealthBootstrapAdapter(new OctokitCredentialHealthClientAdapter(), {
onTemporaryWorkflowMutationAttempt: options.onTemporaryWorkflowMutationAttempt,
}),
createSetupTokenPermissionsUseCase(),
permissionPresenter,
new VerifyGuidedWorkflowPatIdentityUseCase(new SetupGithubIdentityQueryAdapter()),
options.configurationSource === 'organization'
? new SetupTrustedCredentialHealthAdapter(new OctokitTrustedCredentialHealthClientAdapter()) : undefined,
);
}
export function createSetupRemoteConfigurationReadPort(): SetupRemoteConfigurationReadPort {
return new SetupRemoteConfigurationQueryRepository(createRepositoryVariablesClient());
}