Skip to content

Commit f03c3b6

Browse files
refactor(backend): add explicit project key validation for Bitbucket displayName
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 2100a36 commit f03c3b6

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

packages/backend/src/repoCompileUtils.ts

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -454,11 +454,25 @@ export const compileBitbucketConfig = async (
454454
const repos = bitbucketRepos.map((repo) => {
455455
const isServer = config.deploymentType === 'server';
456456
const codeHostType: CodeHostType = isServer ? 'bitbucketServer' : 'bitbucketCloud';
457-
const displayName = isServer ?
458-
// Server repos are of the format `project/repo`
459-
`${(repo as BitbucketServerRepository).project!.key}/${(repo as BitbucketServerRepository).slug!}` :
460-
// Cloud repos are of the format `workspace/project/repo`
461-
`${(repo as BitbucketCloudRepository).full_name!.split('/')[0]}/${(repo as BitbucketCloudRepository).project?.key}/${(repo as BitbucketCloudRepository).full_name!.split('/')[1]}`;
457+
const displayName = (() => {
458+
if (isServer) {
459+
const serverRepo = repo as BitbucketServerRepository;
460+
if (!serverRepo.project?.key) {
461+
throw new Error(`No project key found for server repo ${serverRepo.slug}`);
462+
}
463+
// Server repos are of the format `project/repo`
464+
return `${serverRepo.project.key}/${serverRepo.slug!}`;
465+
} else {
466+
const cloudRepo = repo as BitbucketCloudRepository;
467+
const projectKey = cloudRepo.project?.key;
468+
if (!projectKey) {
469+
throw new Error(`No project key found for cloud repo ${cloudRepo.full_name}`);
470+
}
471+
// Cloud repos are of the format `workspace/project/repo`
472+
const [workspace, repoSlug] = cloudRepo.full_name!.split('/');
473+
return `${workspace}/${projectKey}/${repoSlug}`;
474+
}
475+
})();
462476
const externalId = isServer ? (repo as BitbucketServerRepository).id!.toString() : (repo as BitbucketCloudRepository).uuid!;
463477
const isPublic = isServer ? (repo as BitbucketServerRepository).public : (repo as BitbucketCloudRepository).is_private === false;
464478
const isArchived = isServer ? (repo as BitbucketServerRepository).archived === true : false;

0 commit comments

Comments
 (0)