feat: allow setting editorial workflow PR label prefix (#4181)
This commit is contained in:
committed by
GitHub
parent
c0fc423040
commit
6b8fa3fc45
@ -41,6 +41,7 @@ export interface Config {
|
||||
repo?: string;
|
||||
squashMerges: boolean;
|
||||
initialWorkflowStatus: string;
|
||||
cmsLabelPrefix: string;
|
||||
}
|
||||
|
||||
export interface CommitAuthor {
|
||||
@ -189,6 +190,7 @@ export default class API {
|
||||
commitAuthor?: CommitAuthor;
|
||||
squashMerges: boolean;
|
||||
initialWorkflowStatus: string;
|
||||
cmsLabelPrefix: string;
|
||||
|
||||
constructor(config: Config) {
|
||||
this.apiRoot = config.apiRoot || 'https://gitlab.com/api/v4';
|
||||
@ -198,6 +200,7 @@ export default class API {
|
||||
this.repoURL = `/projects/${encodeURIComponent(this.repo)}`;
|
||||
this.squashMerges = config.squashMerges;
|
||||
this.initialWorkflowStatus = config.initialWorkflowStatus;
|
||||
this.cmsLabelPrefix = config.cmsLabelPrefix;
|
||||
}
|
||||
|
||||
withAuthorizationHeaders = (req: ApiRequest) => {
|
||||
@ -557,7 +560,9 @@ export default class API {
|
||||
});
|
||||
|
||||
return mergeRequests.filter(
|
||||
mr => mr.source_branch.startsWith(CMS_BRANCH_PREFIX) && mr.labels.some(isCMSLabel),
|
||||
mr =>
|
||||
mr.source_branch.startsWith(CMS_BRANCH_PREFIX) &&
|
||||
mr.labels.some(l => isCMSLabel(l, this.cmsLabelPrefix)),
|
||||
);
|
||||
}
|
||||
|
||||
@ -658,8 +663,8 @@ export default class API {
|
||||
return { id, path, newFile };
|
||||
}),
|
||||
);
|
||||
const label = mergeRequest.labels.find(isCMSLabel) as string;
|
||||
const status = labelToStatus(label);
|
||||
const label = mergeRequest.labels.find(l => isCMSLabel(l, this.cmsLabelPrefix)) as string;
|
||||
const status = labelToStatus(label, this.cmsLabelPrefix);
|
||||
const updatedAt = mergeRequest.updated_at;
|
||||
return {
|
||||
collection,
|
||||
@ -710,7 +715,7 @@ export default class API {
|
||||
target_branch: this.branch,
|
||||
title: commitMessage,
|
||||
description: DEFAULT_PR_BODY,
|
||||
labels: statusToLabel(status),
|
||||
labels: statusToLabel(status, this.cmsLabelPrefix),
|
||||
// eslint-disable-next-line @typescript-eslint/camelcase
|
||||
remove_source_branch: true,
|
||||
squash: this.squashMerges,
|
||||
@ -771,8 +776,8 @@ export default class API {
|
||||
const mergeRequest = await this.getBranchMergeRequest(branch);
|
||||
|
||||
const labels = [
|
||||
...mergeRequest.labels.filter(label => !isCMSLabel(label)),
|
||||
statusToLabel(newStatus),
|
||||
...mergeRequest.labels.filter(label => !isCMSLabel(label, this.cmsLabelPrefix)),
|
||||
statusToLabel(newStatus, this.cmsLabelPrefix),
|
||||
];
|
||||
await this.updateMergeRequestLabels(mergeRequest, labels);
|
||||
}
|
||||
|
@ -52,6 +52,7 @@ export default class GitLab implements Implementation {
|
||||
apiRoot: string;
|
||||
token: string | null;
|
||||
squashMerges: boolean;
|
||||
cmsLabelPrefix: string;
|
||||
mediaFolder: string;
|
||||
previewContext: string;
|
||||
|
||||
@ -79,6 +80,7 @@ export default class GitLab implements Implementation {
|
||||
this.apiRoot = config.backend.api_root || 'https://gitlab.com/api/v4';
|
||||
this.token = '';
|
||||
this.squashMerges = config.backend.squash_merges || false;
|
||||
this.cmsLabelPrefix = config.backend.cms_label_prefix || '';
|
||||
this.mediaFolder = config.media_folder;
|
||||
this.previewContext = config.backend.preview_context || '';
|
||||
this.lock = asyncLock();
|
||||
@ -117,6 +119,7 @@ export default class GitLab implements Implementation {
|
||||
repo: this.repo,
|
||||
apiRoot: this.apiRoot,
|
||||
squashMerges: this.squashMerges,
|
||||
cmsLabelPrefix: this.cmsLabelPrefix,
|
||||
initialWorkflowStatus: this.options.initialWorkflowStatus,
|
||||
});
|
||||
const user = await this.api.user();
|
||||
|
Reference in New Issue
Block a user