MCPcopy
hub / github.com/coder/mux / getWorkspaceProjectRepos

Function getWorkspaceProjectRepos

src/node/services/workspaceProjectRepos.ts:175–234  ·  view source on GitHub ↗
(
  params: WorkspaceProjectRepoParams
)

Source from the content-addressed store, hash-verified

173}
174
175export function getWorkspaceProjectRepos(
176 params: WorkspaceProjectRepoParams
177): WorkspaceProjectRepo[] {
178 assert(
179 params.workspaceId.trim().length > 0,
180 "getWorkspaceProjectRepos: workspaceId must be non-empty"
181 );
182 assert(
183 params.workspaceName.trim().length > 0,
184 "getWorkspaceProjectRepos: workspaceName must be non-empty"
185 );
186 assert(
187 params.workspacePath.trim().length > 0,
188 "getWorkspaceProjectRepos: workspacePath must be non-empty"
189 );
190 assert(
191 params.projectPath.trim().length > 0,
192 "getWorkspaceProjectRepos: projectPath must be non-empty"
193 );
194
195 const projectStorageKeys = getWorkspaceProjectStorageKeys({
196 projectPath: params.projectPath,
197 projectName: params.projectName,
198 projects: params.projects,
199 });
200 const isMultiProject = projectStorageKeys.length > 1;
201
202 const repos = projectStorageKeys.map((project) => {
203 const sshWorkspacePathHint = isMultiProject
204 ? getWorkspacePathHintForProject(params, project.projectPath)
205 : undefined;
206
207 const repoCwd = !isMultiProject
208 ? params.workspacePath
209 : (sshWorkspacePathHint ??
210 createRuntime(params.runtimeConfig, {
211 projectPath: project.projectPath,
212 workspaceName: params.workspaceName,
213 }).getWorkspacePath(project.projectPath, params.workspaceName));
214
215 assert(
216 repoCwd.trim().length > 0,
217 `getWorkspaceProjectRepos: repoCwd missing for ${project.projectName}`
218 );
219
220 return {
221 projectPath: project.projectPath,
222 projectName: project.projectName,
223 storageKey: project.storageKey,
224 repoCwd,
225 } satisfies WorkspaceProjectRepo;
226 });
227
228 assert(
229 new Set(repos.map((repo) => repo.storageKey)).size === repos.length,
230 "getWorkspaceProjectRepos: storage keys must be unique after disambiguation"
231 );
232

Calls 5

createRuntimeFunction · 0.90
getWorkspacePathMethod · 0.65
assertFunction · 0.50

Tested by

no test coverage detected