Api now <flattened> :hurray:
Signed-off-by: Erik Engervall <erik.engervall@gmail.com>
This commit is contained in:
@@ -54,12 +54,10 @@ describe('GitReleaseApiClient', () => {
|
||||
"getAccessToken": [MockFunction],
|
||||
},
|
||||
"host": "github.com",
|
||||
"patch": Object {
|
||||
"merge": [Function],
|
||||
"updateRelease": [Function],
|
||||
},
|
||||
"merge": [Function],
|
||||
"promoteRelease": [Function],
|
||||
"updateRef": [Function],
|
||||
"updateRelease": [Function],
|
||||
}
|
||||
`);
|
||||
});
|
||||
|
||||
@@ -18,10 +18,8 @@ import { ConfigApi, OAuthApi } from '@backstage/core';
|
||||
import { Octokit } from '@octokit/rest';
|
||||
import { readGitHubIntegrationConfigs } from '@backstage/integration';
|
||||
|
||||
import { CalverTagParts } from '../helpers/tagParts/getCalverTagParts';
|
||||
import { DISABLE_CACHE } from '../constants/constants';
|
||||
import { Project } from '../contexts/ProjectContext';
|
||||
import { SemverTagParts } from '../helpers/tagParts/getSemverTagParts';
|
||||
import { UnboxArray, UnboxReturnedPromise } from '../types/helpers';
|
||||
|
||||
export class GitReleaseApiClient implements GitReleaseApi {
|
||||
@@ -377,54 +375,47 @@ export class GitReleaseApiClient implements GitReleaseApi {
|
||||
};
|
||||
};
|
||||
|
||||
patch: GitReleaseApi['patch'] = {
|
||||
merge: async ({ owner, repo, base, head }) => {
|
||||
const { octokit } = await this.getOctokit();
|
||||
const { data: merge } = await octokit.repos.merge({
|
||||
owner,
|
||||
repo,
|
||||
base,
|
||||
head,
|
||||
});
|
||||
|
||||
return {
|
||||
htmlUrl: merge.html_url,
|
||||
commit: {
|
||||
message: merge.commit.message,
|
||||
tree: {
|
||||
sha: merge.commit.tree.sha,
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
|
||||
updateRelease: async ({
|
||||
merge: GitReleaseApi['merge'] = async ({ owner, repo, base, head }) => {
|
||||
const { octokit } = await this.getOctokit();
|
||||
const { data: merge } = await octokit.repos.merge({
|
||||
owner,
|
||||
repo,
|
||||
bumpedTag,
|
||||
latestRelease,
|
||||
tagParts,
|
||||
selectedPatchCommit,
|
||||
}) => {
|
||||
const { octokit } = await this.getOctokit();
|
||||
const { data: updatedRelease } = await octokit.repos.updateRelease({
|
||||
owner,
|
||||
repo,
|
||||
release_id: latestRelease.id,
|
||||
tag_name: bumpedTag,
|
||||
body: `${latestRelease.body}
|
||||
base,
|
||||
head,
|
||||
});
|
||||
|
||||
#### [Patch ${tagParts.patch}](${selectedPatchCommit.htmlUrl})
|
||||
|
||||
${selectedPatchCommit.commit.message}`,
|
||||
});
|
||||
return {
|
||||
htmlUrl: merge.html_url,
|
||||
commit: {
|
||||
message: merge.commit.message,
|
||||
tree: {
|
||||
sha: merge.commit.tree.sha,
|
||||
},
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
return {
|
||||
name: updatedRelease.name,
|
||||
tagName: updatedRelease.tag_name,
|
||||
htmlUrl: updatedRelease.html_url,
|
||||
};
|
||||
},
|
||||
updateRelease: GitReleaseApi['updateRelease'] = async ({
|
||||
owner,
|
||||
repo,
|
||||
releaseId,
|
||||
body,
|
||||
tagName,
|
||||
}) => {
|
||||
const { octokit } = await this.getOctokit();
|
||||
const { data: updatedRelease } = await octokit.repos.updateRelease({
|
||||
owner,
|
||||
repo,
|
||||
release_id: releaseId,
|
||||
tag_name: tagName,
|
||||
body,
|
||||
});
|
||||
|
||||
return {
|
||||
name: updatedRelease.name,
|
||||
tagName: updatedRelease.tag_name,
|
||||
htmlUrl: updatedRelease.html_url,
|
||||
};
|
||||
};
|
||||
|
||||
promoteRelease: GitReleaseApi['promoteRelease'] = async ({
|
||||
@@ -674,35 +665,32 @@ export interface GitReleaseApi {
|
||||
};
|
||||
}>;
|
||||
|
||||
patch: {
|
||||
merge: (
|
||||
args: {
|
||||
base: string;
|
||||
head: string;
|
||||
} & OwnerRepo,
|
||||
) => Promise<{
|
||||
htmlUrl: string;
|
||||
commit: {
|
||||
message: string;
|
||||
tree: {
|
||||
sha: string;
|
||||
};
|
||||
merge: (
|
||||
args: {
|
||||
base: string;
|
||||
head: string;
|
||||
} & OwnerRepo,
|
||||
) => Promise<{
|
||||
htmlUrl: string;
|
||||
commit: {
|
||||
message: string;
|
||||
tree: {
|
||||
sha: string;
|
||||
};
|
||||
}>;
|
||||
};
|
||||
}>;
|
||||
|
||||
updateRelease: (
|
||||
args: {
|
||||
bumpedTag: string;
|
||||
latestRelease: NonNullable<GetLatestReleaseResult>;
|
||||
tagParts: SemverTagParts | CalverTagParts;
|
||||
selectedPatchCommit: GetRecentCommitsResultSingle;
|
||||
} & OwnerRepo,
|
||||
) => Promise<{
|
||||
name: string | null;
|
||||
updateRelease: (
|
||||
args: {
|
||||
releaseId: number;
|
||||
body: string;
|
||||
tagName: string;
|
||||
htmlUrl: string;
|
||||
}>;
|
||||
};
|
||||
} & OwnerRepo,
|
||||
) => Promise<{
|
||||
name: string | null;
|
||||
tagName: string;
|
||||
htmlUrl: string;
|
||||
}>;
|
||||
|
||||
promoteRelease: (
|
||||
args: {
|
||||
@@ -784,12 +772,12 @@ export type GetComparisonResult = UnboxReturnedPromise<
|
||||
export type CreateReleaseResult = UnboxReturnedPromise<
|
||||
GitReleaseApi['createRelease']
|
||||
>;
|
||||
export type MergeResult = UnboxReturnedPromise<GitReleaseApi['patch']['merge']>;
|
||||
export type MergeResult = UnboxReturnedPromise<GitReleaseApi['merge']>;
|
||||
export type CreateTagObjectResult = UnboxReturnedPromise<
|
||||
GitReleaseApi['createTagObject']
|
||||
>;
|
||||
export type UpdateReleaseResult = UnboxReturnedPromise<
|
||||
GitReleaseApi['patch']['updateRelease']
|
||||
GitReleaseApi['updateRelease']
|
||||
>;
|
||||
export type PromoteReleaseResult = UnboxReturnedPromise<
|
||||
GitReleaseApi['promoteRelease']
|
||||
|
||||
@@ -154,7 +154,7 @@ export function usePatch({
|
||||
abortIfError(forceBranchRes.error);
|
||||
if (!forceBranchRes.value || !releaseBranchRes.value) return undefined;
|
||||
|
||||
const merge = await pluginApiClient.patch
|
||||
const merge = await pluginApiClient
|
||||
.merge({
|
||||
owner: project.owner,
|
||||
repo: project.repo,
|
||||
@@ -299,14 +299,19 @@ export function usePatch({
|
||||
abortIfError(createdReferenceRes.error);
|
||||
if (!createdReferenceRes.value || !releaseBranchRes.value) return undefined;
|
||||
|
||||
const updatedRelease = await pluginApiClient.patch
|
||||
const selectedPatchCommit = releaseBranchRes.value.selectedPatchCommit;
|
||||
|
||||
const updatedRelease = await pluginApiClient
|
||||
.updateRelease({
|
||||
owner: project.owner,
|
||||
repo: project.repo,
|
||||
bumpedTag,
|
||||
latestRelease,
|
||||
selectedPatchCommit: releaseBranchRes.value.selectedPatchCommit,
|
||||
tagParts,
|
||||
releaseId: latestRelease.id,
|
||||
tagName: bumpedTag,
|
||||
body: `${latestRelease.body}
|
||||
|
||||
#### [Patch ${tagParts.patch}](${selectedPatchCommit.htmlUrl})
|
||||
|
||||
${selectedPatchCommit.commit.message}`,
|
||||
})
|
||||
.catch(asyncCatcher);
|
||||
|
||||
|
||||
@@ -253,23 +253,21 @@ export const mockApiClient: GitReleaseApi = {
|
||||
},
|
||||
})),
|
||||
|
||||
patch: {
|
||||
merge: jest.fn(async () => ({
|
||||
htmlUrl: 'mock_merge_html_url',
|
||||
commit: {
|
||||
message: 'mock_merge_commit_message',
|
||||
tree: {
|
||||
sha: 'mock_merge_commit_tree_sha',
|
||||
},
|
||||
merge: jest.fn(async () => ({
|
||||
htmlUrl: 'mock_merge_html_url',
|
||||
commit: {
|
||||
message: 'mock_merge_commit_message',
|
||||
tree: {
|
||||
sha: 'mock_merge_commit_tree_sha',
|
||||
},
|
||||
})),
|
||||
},
|
||||
})),
|
||||
|
||||
updateRelease: jest.fn(async () => ({
|
||||
name: 'mock_update_release_name',
|
||||
tagName: 'mock_update_release_tag_name',
|
||||
htmlUrl: 'mock_update_release_html_url',
|
||||
})),
|
||||
},
|
||||
updateRelease: jest.fn(async () => ({
|
||||
name: 'mock_update_release_name',
|
||||
tagName: 'mock_update_release_tag_name',
|
||||
htmlUrl: 'mock_update_release_html_url',
|
||||
})),
|
||||
|
||||
promoteRelease: jest.fn(async () => ({
|
||||
name: 'mock_release_name',
|
||||
|
||||
Reference in New Issue
Block a user