Repository navigation
Expand file tree
/
Copy pathServerSourceControlHost.ts
More file actions
57 lines (55 loc) · 2.45 KB
/
Copy pathServerSourceControlHost.ts
File metadata and controls
57 lines (55 loc) · 2.45 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
57
import * as SecretResolver from "@t3tools/secret-provider-core/server/SecretResolver";
import * as SourceControlHost from "@t3tools/source-control-core/server/SourceControlHost";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
import * as SecretResolverLayer from "../secrets/SecretResolver.ts";
import * as ServerSettings from "../serverSettings.ts";
import * as GitVcsDriver from "../vcs/GitVcsDriver.ts";
import * as VcsDriverRegistry from "../vcs/VcsDriverRegistry.ts";
import * as VcsProcess from "../vcs/VcsProcess.ts";
import { resolveSourceControlHostSecrets } from "./sourceControlHostSecrets.ts";
export const layer = Layer.effect(
SourceControlHost.SourceControlHost,
Effect.gen(function* () {
const serverSettings = yield* ServerSettings.ServerSettingsService;
const process = yield* VcsProcess.VcsProcess;
const git = yield* GitVcsDriver.GitVcsDriver;
const vcsRegistry = yield* VcsDriverRegistry.VcsDriverRegistry;
const secrets = yield* SecretResolver.SecretResolver;
return SourceControlHost.SourceControlHost.of({
settings: {
get: serverSettings.getSettings,
getWithSecrets: (kind) =>
serverSettings.getSettings.pipe(
Effect.flatMap((settings) =>
resolveSourceControlHostSecrets(secrets, settings.sourceControlHosts, kind).pipe(
Effect.map((sourceControlHosts) =>
sourceControlHosts === settings.sourceControlHosts
? settings
: { ...settings, sourceControlHosts },
),
),
),
),
update: serverSettings.updateSettings,
},
process: { run: process.run },
git: {
execute: git.execute,
resolveCommit: git.resolveCommit,
remotes: (cwd) =>
vcsRegistry.resolve({ cwd }).pipe(Effect.map((handle) => handle.driver.listRemotes(cwd))),
readConfigValue: git.readConfigValue,
resolvePrimaryRemoteName: git.resolvePrimaryRemoteName,
ensureRemote: git.ensureRemote,
listLocalBranchNames: git.listLocalBranchNames,
fetchRemoteBranch: git.fetchRemoteBranch,
fetchRemoteTrackingBranch: git.fetchRemoteTrackingBranch,
setBranchUpstream: git.setBranchUpstream,
createBranch: git.createBranch,
writeConfigValue: git.writeConfigValue,
switchRef: git.switchRef,
},
});
}),
).pipe(Layer.provide(SecretResolverLayer.layer));