-
Notifications
You must be signed in to change notification settings - Fork 58
/
getBackportBranchName.ts
41 lines (39 loc) · 1.15 KB
/
getBackportBranchName.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import Handlebars from 'handlebars';
import { Commit } from '../../entrypoint.api';
import { ValidConfigOptions } from '../../options/options';
import { getShortSha } from '../github/commitFormatters';
/*
* Returns the name of the backport branch without remote name
*
* Examples:
* For a single PR: `backport/7.x/pr-1234`
* For a single commit: `backport/7.x/commit-abcdef`
* For multiple: `backport/7.x/pr-1234_commit-abcdef`
*/
export function getBackportBranchName({
options,
targetBranch,
commits,
}: {
options: ValidConfigOptions;
targetBranch: string;
commits: Commit[];
}) {
const refValues = commits
.map((commit) =>
commit.sourcePullRequest
? `pr-${commit.sourcePullRequest.number}`
: `commit-${getShortSha(commit.sourceCommit.sha)}`,
)
.join('_')
.slice(0, 200);
const defaultBackportBranchName = 'backport/{{targetBranch}}/{{refValues}}';
const template = Handlebars.compile(
options.backportBranchName ?? defaultBackportBranchName,
);
return template({
sourcePullRequest: commits[0].sourcePullRequest, // assume that all commits are from the same PR
targetBranch,
refValues,
});
}