mirror of https://github.com/python/cpython
54 lines
1.6 KiB
YAML
54 lines
1.6 KiB
YAML
name: Add issue header
|
|
# Automatically edits an issue's descriptions with a header,
|
|
# one of:
|
|
#
|
|
# - Bug report
|
|
# - Crash report
|
|
# - Feature or enhancement
|
|
|
|
on:
|
|
issues:
|
|
types:
|
|
# Only ever run once
|
|
- opened
|
|
|
|
|
|
jobs:
|
|
add-header:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
issues: write
|
|
steps:
|
|
- uses: actions/github-script@v6
|
|
with:
|
|
# language=JavaScript
|
|
script: |
|
|
// https://devguide.python.org/triage/labels/#type-labels
|
|
const HEADERS = new Map([
|
|
['type-bug', 'Bug report'],
|
|
['type-crash', 'Crash report'],
|
|
['type-feature', 'Feature or enhancement'],
|
|
]);
|
|
let issue_data = await github.rest.issues.get({
|
|
issue_number: context.issue.number,
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo
|
|
}).then(issue => issue.data);
|
|
let header = '';
|
|
for (const label_data of issue_data.labels) {
|
|
const label_name = (typeof label_data === 'string') ? label_data : label_data.name;
|
|
if (HEADERS.has(label_name)) {
|
|
header = HEADERS.get(label_name);
|
|
break;
|
|
}
|
|
}
|
|
if (header !== '') {
|
|
console.log(`Setting new header: ${header}`);
|
|
await github.rest.issues.update({
|
|
issue_number: context.issue.number,
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
body: `# ${header}\n\n${issue_data.body.replaceAll('\r', '')}`
|
|
});
|
|
}
|