cli / mcp for bitbucket
at main 45 lines 1.5 kB view raw
1import { 2 getRepositoriesByWorkspaceByRepoSlugCommitByCommit, 3 getRepositoriesByWorkspaceByRepoSlugCommits, 4} from '../generated/bitbucket-client/sdk.gen'; 5import type { BaseCommit, Commit } from '../generated/bitbucket-client/types.gen'; 6import type { PaginationParams } from '../types/pagination.types'; 7import { apiError, fail, ok, type Result } from '../types/result.types'; 8 9export type ListCommitsParams = { 10 workspace: string; 11 repoSlug: string; 12 revision?: string; 13} & PaginationParams; 14 15export type GetCommitParams = { 16 workspace: string; 17 repoSlug: string; 18 commit: string; 19}; 20 21export const listCommits = async (params: ListCommitsParams): Promise<Result<BaseCommit[]>> => { 22 const { workspace, repoSlug } = params; 23 const response = await getRepositoriesByWorkspaceByRepoSlugCommits({ 24 path: { workspace, repo_slug: repoSlug }, 25 }); 26 27 if (response.error) { 28 return fail(apiError(response.response.status, 'Failed to list commits', response.error)); 29 } 30 31 return ok(response.data?.values ?? []); 32}; 33 34export const getCommit = async (params: GetCommitParams): Promise<Result<Commit>> => { 35 const { workspace, repoSlug, commit } = params; 36 const response = await getRepositoriesByWorkspaceByRepoSlugCommitByCommit({ 37 path: { workspace, repo_slug: repoSlug, commit }, 38 }); 39 40 if (response.error) { 41 return fail(apiError(response.response.status, `Commit '${commit}' not found`, response.error)); 42 } 43 44 return response.data ? ok(response.data) : fail(apiError(404, `Commit '${commit}' not found`)); 45};