-
Notifications
You must be signed in to change notification settings - Fork 16
70 lines (63 loc) · 2.36 KB
/
label-title-prefix.yml
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
name: "Pull Request/Issue Title Prefixer"
on:
issues:
types: [labeled]
pull_request_target:
types: [labeled]
jobs:
add_title_prefix:
name: "Add title prefix based on label"
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/github-script@v6
name: "Update Issue/PR Title"
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const prefixLabels = {
"documentation": "Docs",
"build": "Build",
"translator": "Translator"
};
function addTitlePrefix(title, prefix) {
// Check if title already starts with the prefix
if (!title.startsWith(prefix + ": ")) {
// If not, check if the first word is the label case-insensitively
if (title.match(new RegExp(`^${prefix}`, 'i'))) {
// If title has the label case-insensitively, replace it
title = title.replace(new RegExp(`^${prefix}`, 'i'), prefix);
} else {
// Otherwise, add the prefix at the beginning
title = prefix + ": " + title;
}
}
return title;
}
const labelAdded = context.payload.label.name;
// Check if the issue or PR has the label
if (labelAdded in prefixLabels) {
let prefix = prefixLabels[labelAdded];
switch(context.eventName) {
case 'issues':
github.rest.issues.update({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
title: addTitlePrefix(context.payload.issue.title, prefix)
});
break
case 'pull_request_target':
github.rest.pulls.update({
pull_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
title: addTitlePrefix(context.payload.pull_request.title, prefix)
});
break
default:
core.setFailed('Unrecognited eventName: ' + context.eventName);
}
}